簡體   English   中英

grunt.js - 縮小文件時的多個目標

[英]grunt.js - Multiple destinations when minifying files

我的grunt.js有一個典型的縮小任務:

min: {
    dist: {
        src: ['dist/precook.js'],
        dest: 'dist/precook.min.js'
    }
}

擁有多個dest文件的最簡單方法是什么? 我想縮小成:

  • DIST / precook.min.js
  • 例如/ JS /供應商/ precook.min.js

內置的min任務似乎不支持多個目的地,所以我認為這可以通過簡單的“復制”任務來實現。 有人可以指點我正確的方向嗎?

我會使用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');

(可選) 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優化器來縮小您的模塊。

首先,您需要在項目中添加grunt-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            

縮小后你將有三個文件:

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

有一個類似的問題,並創建了一個grunt多任務 ,運行多個目錄上的指定任務列表

用法確切的情況:```

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'
       ]
    }
}

```

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM