我的grunt脚本由yeoman生成,通过useminPrepare、concat和uglifyjs连接和缩小js文件。
这是伟大的工作,但有一个js脚本,我不希望它缩小。我如何在grunt文件中指定它?
你可以做的是把你不想缩小的文件放在构建脚本之外,例如:
<!-- build:js js/app.js -->
<script src="js/app.js"></script>
<script src="js/minifythis.js"></script>
<script src="js/models/minifythis.js"></script>
<!-- endbuild -->
<script src="js/do-not-minify-this.js"></script>
我花了几天时间寻找一个类似于你的问题的解决方案,然后我发现了一个不同的问题,它的答案可能适合解决你的问题,因为它解决了我的问题:https://stackoverflow.com/a/24819171/785985
解决方案是定义由Grunt处理的定制块。然后,您可以使用['concat']
指定一个块,使用['concat', 'uglifyjs']
指定另一个块。
如果您选择从John Locke的每个项目的最小化标记中排除文件,请不要忘记手动将这些文件复制到'dist'目录。通常,当您缩小文件时,生成的缩小库被复制到dist目录。但是由于你没有缩小它们,你必须自己复制它们。
例如,我不想压缩我的应用程序中的用户脚本,以便人们更容易在线检查代码。在编辑我的'index.html'后,将它们从标签中删除:
'<!-- build:js({.tmp,app}) scripts/scripts.js -->'
我必须在我的Gruntfile的复制步骤中添加以下内容:
copy: {
dist: {
files: [
...
{ // manually copy all the files you are not minimizing:
expand: true,
cwd: '<%= yeoman.app %>/scripts/',
src:"{,*/}*.js",
dest:"<%= yeoman.dist %>/scripts/"
}
]
},
...
},
在Grunt中,复制文件的语法非常棘手。
只需在Gruntfile.js中将该脚本的最小化选项设置为false。
optimization: {
minimize: false
}