path - Yeoman/Grunt Usemin子文件夹

标签 path gruntjs yeoman subdirectory grunt-usemin

我在使用yeoman/grunt和usemin时经历了可怕的时光-当我有子文件夹时,试图在将正确的路径写入html的同时使输出文件正常工作。

我的基本设置是在子文件夹(en,de,fr等)中有顶级页面(例如index.html)和特定于语言的页面-每个页面都有通用的js文件(如jquery),但也有特定于语言的js文件(与CSS相同,但保持简单...)

– Gruntfile.js
– app
    |– index.html
    |– js
        jquery.js
            |– en
                english.js
            |– de
                german.js
    |– css
    |– en
        |– index.html
    |– de
        |– index.html
– dist

因此,基本上-有一个带有jquery等的顶级index.html-因此那里的script标签可能看起来像
<script src="js/jquery.js"></script>

或带转
<script src="js/123.jquery.js"></script>

但是在en/index.html中,脚本标记应类似于
(对于常见的-如jquery)
<script src="../js/jquery.js"></script>

或带有转速
<script src="../js/123.jquery.js"></script>

麻烦的是../。

我可以构建js文件,但不能构建,但不能修订,或者可以修订,但是为空,或者可以构建和修订,但是在错误的位置(通常在app和dist文件夹的外部/上方)!

在en/index.html中-我无法确定build:js的外观
例如。
<!-- build:js js/jquery.js -->
<script src="../js/jquery.js"></script>
<!-- endbuild -->

<!-- build:js js/en/english/jquery.js -->
<script src="../js/en/english.js"></script>
<!-- endbuild -->

我已经尝试了所有我能想到的组合-似乎归结为如果我在build:js路径中写了一个../,那么实际文件位于app文件夹的上一级,但是将路径写在正确的HTML。如果我将../留在外面,它会将文件放在正确的位置,但是html都没有../(这显然是需要的)-那么我怎么说我希望输出文件向上引用一级(在en/文件夹之外),但请注意不要将其向上一级(在dist文件夹之外!)

谢谢!

最佳答案

我遇到了一个非常相似的问题。我使用他们的静态网站选项将我的grunt生成的网站托管在S3上。在本地,usemin生成的内容运行良好(具有绝对路径),但是由于我将站点放在S3的存储桶中,因此它需要 Assets 文件的完整绝对路径(具有域)才能实际运行。

输入grunt-replace。使用搜索/替换模式是我发现实际完成此操作的唯一方法。对我来说,我只需要用“http://s3domain.com/bucket/site-name/assets/”替换“/assets/”即可。这是我艰苦的任务定义:

replace: {
  dist: {
    options: {
      patterns: [
        {
          match: /\/assets\//,
          replacement: 'http://s3domain.com/bucket/site-name/assets/'
        }
      ]
    },
    files: [
      {
        expand: true,
        src: ['dist/**/*.html']
      }
    ]
  }
}

我已将其添加到deploy任务中,以便仅在即将推送至S3之前运行。

对于您的情况,您可以让usemin来做它的事情,然后仅替换子目录中的文件(例如enes),然后更改 Assets 路径以在它们之前添加../

关于path - Yeoman/Grunt Usemin子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18346022/

相关文章:

javascript - 使用 jquery 脚本页面从当前文件夹设置 css 图像

ruby-on-rails - 如何定义链接路径

c# - 获取文本文件并随应用程序一起提供

javascript - 使用 grunt-neuter 对文件进行排序

javascript - 如果缺少输入文件,是否有办法导致 Grunt 插件失败?

yeoman - 你用制表符而不是空格生成

twitter-bootstrap-3 - 如何让 Grunt 在构建中包含 bootstrap-theme.css?

Android MediaPlayer 文件的完整路径

gruntjs - 为同一任务 Grunt 两次

node.js - 将 Yeoman 应用程序部署到 Heroku 时出现问题