在我的索引文件中,我有类似这样的内容:
<!-- 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的简洁方法是什么?
答案 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,以防止您自己编辑文件。