53

バックグラウンド

約30分前にうなり声を使い始めたばかりです。我慢してください。

しかし、私は自分の js を見て、それをすべて 1 つのファイルに圧縮するかなり単純なスクリプトを実行しています。

コード

"use strict";
module.exports = function (grunt) {

    // load all grunt tasks
    require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        uglify: {
            options: {
                beautify: true,
                report: 'gzip'
            },
            build: {
                src: ['docroot/js/*.js', 'docroot/components/pages/*.js', 'docroot/components/plugins/*.js'],
                dest: 'docroot/js/main.min.js'
            }
        },
        watch: {
            options: {
                dateFormat: function(time) {
                    grunt.log.writeln('The watch finished in ' + time + 'ms at' + (new Date()).toString());
                    grunt.log.writeln('Waiting for more changes...');
                }
            },
            js: {
                files: '<%= uglify.build.src %>',
                tasks: ['uglify']
            }
        }
    });

    grunt.registerTask('default', 'watch');

}

質問

私の main.min.js は毎回コンパイルに含まれています。私のmin.jsが2x、4x、8x、16xなどを取得していることを意味します。これを回避する最善の方法は、例外を追加して無視することmain.min.jsですか?

4

1 に答える 1

124

src 配列の最後に、追加します

'!docroot/js/main.min.js'

これで除外されます。!それを除外に変えます。

http://gruntjs.com/api/grunt.file#grunt.file.expand

! で始まるパターンに一致するパス 返される配列から除外されます。パターンは順番に処理されるため、包含と除外の順序は重要です。

これは grunt uglify に固有のものではありませんが、ファイルを指定するために grunt 規則を使用するタスクはすべてこの方法で機能します。

ただし、一般的なアドバイスとして、ビルドしたファイルをソース ファイル以外の場所に置くことをお勧めします。ルートdistフォルダーのように。

于 2013-08-27T06:32:45.777 に答える