我的grunt.js有一个典型的缩小任务:
min: {
dist: {
src: ['dist/precook.js'],
dest: 'dist/precook.min.js'
}
}
拥有多个目标文件的最简单方法是什么?我想缩小成:
- DIST / precook.min.js
- 例如/ JS /供应商/ precook.min.js
该 内置的min任务 似乎不支持多个目的地,所以我认为这可以通过简单的“复制”任务来实现。有人可以指出我正确的方向吗?
我用了 咕噜-contrib请复制 插入:
安装时 NPM:
npm install grunt-contrib-copy
修改 grunt.js
(添加复制任务定义和加载复制插件):
...
copy: {
dist: {
files: {
'example/js/vendor/': 'dist/precook.min.js'
}
}
}
...
grunt.loadNpmTasks('grunt-contrib-copy');
可选 寄存器 copy
进入grunt的默认任务。
这里增加的美妙之处在于您现在也可以执行所有其他复制任务。甚至支持模式,例如复制所有缩小的文件('dist/*.min.js'
)。
我用了 咕噜-contrib请复制 插入:
安装时 NPM:
npm install grunt-contrib-copy
修改 grunt.js
(添加复制任务定义和加载复制插件):
...
copy: {
dist: {
files: {
'example/js/vendor/': 'dist/precook.min.js'
}
}
}
...
grunt.loadNpmTasks('grunt-contrib-copy');
可选 寄存器 copy
进入grunt的默认任务。
这里增加的美妙之处在于您现在也可以执行所有其他复制任务。甚至支持模式,例如复制所有缩小的文件('dist/*.min.js'
)。
concat: {
css: {
src: ['UI.controls/assets/css/*.css'],
dest: 'UI.controls/assets/css/min/production.css'
},
js: {
src: ['UI.controls/assets/js/*.js'],
dest: 'UI.controls/assets/js/min/production.js'
},
js2: {
src: ['UI.core/assets/js/*.js'],
dest: 'UI.core/assets/js/min/production.js'
}
},
cssmin: {
css: {
src: 'UI.controls/assets/css/min/production.css',
dest: 'UI.controls/assets/css/min/production.min.css'
}
},
uglify: {
js: {
src: 'UI.controls/assets/js/min/production.js',
dest: 'UI.controls/assets/js/min/production.min.js'
},
js2: {
src: 'UI.core/assets/js/min/production.js',
dest: 'UI.core/assets/js/min/production.min.js'
}
},
watch: {
css: {
files: ['UI.controls/assets/css/*.css'],
tasks: ['concat:css', 'cssmin:css']
},
js: {
files: ['UI.controls/assets/js/*.js'],
tasks: ['concat:js', 'uglify:js']
},
js2: {
files: ['UI.core/assets/js/*.js'],
tasks: ['concat:js', 'uglify:js']
}
}
这是一种替代方法(旁边 @jalonen如果您正在使用,可能会让您感兴趣的解决方案 requirejs 模块化你的项目,然后你可以使用 requirejs优化器 缩小你的模块。
首先,您需要添加 咕噜-的contrib-requirejs 到你的项目:
npm install grunt-contrib-requirejs --save-dev
Grunt配置:
requirejs: {
production:{
options:{
// don't include libaries when concatenating/minifying
paths:{
angular:'empty:',
jquery:'empty:'
},
baseUrl:'path/to/src/js',
dir:'path/to/target/js',
// keeps only the combined files
removeCombined:true,
modules:[
{name:'app', exclude: ['moduleA', 'moduleB']},
{name:'moduleA'},
{name:'moduleB'}
]
}
}
}
...
grunt.loadNpmTasks('grunt-contrib-copy');
说明:
假设你有这个依赖树(->
手段 依赖于取决于):
app -> moduleA -> moduleA1
-> moduleA2
app -> moduleB -> moduleB1
-> moduleB2
缩小后你将有三个文件:
app
(缩小版的应用程序)
moduleA
(缩小版 moduleA
, moduleA1
,和 moduleA2
)
moduleB
(缩小版 moduleB
, moduleB1
,和 moduleB2
)
有类似的问题,并创建了一个 咕噜多任务 在多个目录上运行指定任务的列表
用法确切的情况:
```
min: {
dist: {
src: ['dist/precook.js'],
dest: 'dist/precook.min.js'
}
},
multidest: {
minifiedFiles: {
tasks: ['min'],
dest: [
'dist/precook.min.js',
'example/js/vendor/precook.min.js'
]
}
}
```