11

私の grunt.js には、典型的な縮小タスクがあります。

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

複数の dest ファイルを持つ最も簡単な方法は何ですか? 次のように縮小したいと思います。

  • dist/precook.min.js
  • example/js/vendor/precook.min.js

組み込みの最小タスクは複数の宛先をサポートしていないように見えるため、単純な「コピー」タスクでこれを実現できると思います。誰かが私を正しい方向に向けることができますか?

4

4 に答える 4

9

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');

オプションで、gruntのデフォルトタスクに登録copyします。

ここで追加された利点は、他のすべてのコピータスクも実行できるようになったことです。すべての縮小ファイルをコピーするなど、パターンもサポートされます('dist/*.min.js')。

于 2012-10-16T12:45:14.980 に答える
7
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']
            }

        }
于 2014-09-30T10:44:01.103 に答える
1

これは( @jalonenのソリューションの隣にある)代替アプローチであり、プロジェクトをモジュール化するためにrequirejsを使用している場合は、requirejsオプティマイザーを使用しモジュールを縮小できます。

まず、プロジェクトにgrunt-contrib-requirejsを追加する必要があります。

npm install grunt-contrib-requirejs --save-dev

グラント構成:

        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            

縮小すると、次の3つのファイルが作成されます。

  • app(アプリの縮小版)
  • moduleA(、、、およびのmoduleA縮小moduleA1バージョンmoduleA2
  • moduleB(、、、およびのmoduleB縮小moduleB1バージョンmoduleB2
于 2013-03-18T16:40:39.750 に答える
1

同様の問題があり、複数のディレクトリで指定されたタスクのリストを実行するうなり声マルチタスクを作成しました

正確なケースの使用法: ```

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

```

于 2014-08-14T18:16:12.663 に答える