grunt.js – 缩小文件时的多个目的地
我的grunt.js有一个典型的缩小任务:
min: { dist: { src: ['dist/precook.js'], dest: 'dist/precook.min.js' } }
有多个dest文件最简单的方法是什么? 我想简化成:
- DIST / precook.min.js
- 例如/ JS /供应商/ precook.min.js
内置的最小任务似乎不支持多个目的地,所以我认为这可以通过一个简单的“复制”任务来实现。 有人能指点我的方向吗?
我会使用grunt-contrib-copy插件:
用npm安装:
npm install grunt-contrib-copy
修改grunt.js
(添加复制任务定义和加载复制插件):
... copy: { dist: { files: { 'example/js/vendor/': 'dist/precook.min.js' } } } ... grunt.loadNpmTasks('grunt-contrib-copy');
可select将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'] } }
如果你使用requirejs模块化你的项目,那么你可以使用requirejs优化器来缩小你的模块,这是另一种方法(接近@jalonen的解决scheme)。
首先,您需要将grunt-contrib-requirejs添加到您的项目中:
npm install grunt-contrib-requirejs --save-dev
咕噜configuration:
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
(app
缩小版本) -
moduleA
(moduleA
,moduleA1
和moduleA2
缩小版本) -
moduleB
(moduleB
,moduleB1
和moduleB2
缩小版本)
有一个类似的问题,并创build了一个多任务运行在多个目录指定的任务列表
确切情况下的用法:“
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' ] } }
“`