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 

缩小后,您将有三个文件:

  • appapp缩小版本)
  • moduleAmoduleAmoduleA1moduleA2缩小版本)
  • moduleBmoduleBmoduleB1moduleB2缩小版本)

有一个类似的问题,并创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' ] } } 

“`