Grunt文件输出静态资源指向指定的URL

时间:2014-05-05 20:14:38

标签: javascript static gruntjs

在我的索引文件中,我有类似这样的内容:

<!-- build:js({.tmp,app}) scripts/main.js -->
    <script src="scripts/foo.js"></script>
    <script src="scripts/bar.js"></script>
<!-- endbuild -->

然后输出到我的dist这样:

<script src="scripts/cce9cd3a.main.js"></script>

我尝试做的是修改dist的渲染方式,所以它会说:

<script src="https://s3.amazonaws.com/etc/etc/static/scripts/cce9cd3a.main.js"></script>

我的想法是希望它以相同的方式输出到dist文件夹,我将转移到s3。使用grunt将所有静态资源添加到同一个静态服务URL的简洁方法是什么?

1 个答案:

答案 0 :(得分:1)

根据我们在评论中进行的讨论,在grunt-usemin完成后,您有两个常规选项。

1)从shell中查找并替换。

如果您正在使用带有grep和类似工具的* nix系统,则可以将文件放在容易grep的位置并替换。例如,您可以将构建块更改为:

<!-- build:js({.tmp,app}) awsreplacepath/main.js -->
    <script src="scripts/foo.js"></script>
    <script src="scripts/bar.js"></script>
<!-- endbuild -->

所以你会得到类似的东西:

<script src="awsreplacepath/cce9cd3a.main.js"></script>

然后使用grep-and-replace shell脚本,就像这些问题中讨论的一样,将awsreplacepath替换为想要引用的路径。

2)在grunt完成之前查找并替换。

grunt有一些查找和替换插件,但根据npmjs.org,grunt-string-replace似乎使用最多。

这与第一个选项并没有太大的不同。

在这两种情况下,正则表达式都应该很简单,因为你可以选择一个基本上肯定是唯一的字符串...所以你不需要做太多的事情就可以把像'awsreplacepath'这样的东西放到正则表达式中。< / p>

...并且只记得生成的main.js文件usemin以及您需要移动的文件仍然位于awsreplacepath目录中。我们所做的只是更改HTML,以防止您自己编辑文件。