场景:我在部署期间使用一个简单的函数来缩小和压缩JS文件,如下所示:
for i in public/js/*.js; do uglifyjs --overwrite --no-copyright "$i"; done
这种方法的问题在于它缩小并覆盖原始文件。我想以某种方式介绍版本化的缩小JS和CSS 文件。
假设我有一个版本的变量:“123”。如何修改我的脚本以使用此版本编写文件?它应该使用CSS和JS文件,如下所示:
style.css -> style.123.css
script.js -> script.123.js
答案 0 :(得分:2)
这样的东西?
VERSION=123; for i in public/js/*.js; do REV=${i/%.js/.${VERSION}.js}; cp "${i}" "${REV}"; uglifyjs --overwrite --no-copyright "${REV}"; done
REV=${i/%.js/.${VERSION}.js}
用“.123.js”替换最后一次出现的“.js”。
答案 1 :(得分:1)
也应该在sh中工作:
VERSION=321; for i in public/js/*.js; do NEW=$(echo $i | sed s/\\./.$VERSION./) ; cp $i $NEW; uglifyjs --overwrite --no-copyright $NEW; done
答案 2 :(得分:0)
这是一种愚蠢的做法。使用版本控制工具对源进行版本控制。
但是,当然,你是不是想要修改文件。
调用源文件foo.src.js
(或其他)。 (保留最后一个后缀.js
,以便编辑识别语言)。然后有一个生成foo.js
的构建步骤。在开发时,您可以进行“空编译”步骤,只需将foo.src.js
复制到foo.js
即可。当您发布时,复制步骤将更改为执行uglifyjs
而不是副本。无论哪种方式,您都不会手动编辑生成的foo.js
,当然,即使它只是一个副本。您可能希望(而不仅仅是复制)在顶部“生成的文件上添加注释,不要编辑”。
具体细节取决于您。只要在加载时引用正确的名称,就可以foo.js
为原始源文件的名称,foo.u.js
为uglified。