目前使用 grunt 来缩小我的所有 js 文件。我的 html 中有一个 php 脚本,用于检查 url 并决定是否包含一个大的缩小的 javascript 文件或所有常规 javascript 文件。这很烦人,因为我在两个地方列出了所有文件;一次在 grunt 文件中,一次在我的 php 脚本的 switch 语句中。如果团队中的某个人向一个文件添加了新文件,但没有向另一个文件添加新文件,就会发生不好的事情。有没有更简单、更有效的方法来在两者之间进行切换?我们希望我们的生产服务器使用缩小的代码,而我们的本地开发环境使用未缩小的代码。
我在那里看到三个选项。
+ mysite-dev
+ scripts
- myscript.min.js (the non-minified content)
index.html
+ mysite-prod
+ scripts
- myscript.min.js (the minified content)
index.html
+ mysite
+ scripts-all
- myscript.js
- myscript.min.js
+ scripts
- myscript.js > ../scripts-all/myscript.min.js
index.html
+ mysite
+ scripts-all
- myscript.js
- myscript.min.js
+ scripts
- version-prod.js
- version-dev.js
- version.js > version-prod.js
index.html
就我而言,当我发布网站时,我有一个 bash 脚本,它基于 JSON 描述文件构建网站结构和用于开发和生产的文件。
JSON 描述定义了要提供的所有文件,并告知它们是否必须缩小。
[
{
"file": "./index.html",
"minify": false
},
{
"file": "./scripts/app.js",
"minify": true
},
...
]
bash 脚本处理描述,缩小必须缩小的文件,并将结果文件复制到两个不同的目录。 “开发”文件保持原样,而“生产”文件则缩小。
+ release
+ production
+ development
然后我选择要公开的版本(参见:解决方案#1)。这让我可以维护一个单一的代码库,该代码库根据目标发布类型(开发/生产)进行缩小(或不缩小)。
注意:对于这种情况,似乎没有真正干净的解决方案,因为所提供的文件的名称可能与其内容不一致(即:
.min
对于非缩小文件)。