57

static/js/ にいくつかの js ファイルがあります

    1. a.js
    2. b.js
    3. c.js   

grunt.js を設定して以下のファイルを取得する方法:

    1. a.min.js
    2. b.min.js
    3. c.min.js

これまでのところ、特定のファイル名を入力する必要があります:

  min: {
    dist: {
    src:  'js/**/*.js',
    dest: 'js/min/xxx.min.js'
   }
 }
4

11 に答える 11

52

同じ問題があり、すべてのスクリプトを個別に自動的に縮小するソリューションを見つけました。

uglify: {
      build: {
        files: [{
            expand: true,
            src: '**/*.js',
            dest: 'build/scripts',
            cwd: 'app/scripts'
        }]
      }
    }
于 2013-03-22T17:30:23.887 に答える
23

grunt 0.4 では、次のように複数の dest/src ペアを指定できます。

uglify: {
    dist: {
        files: {
            'dist/main.js': 'src/main.js',
            'dist/widget.js': 'src/widget.js'
        }
    }
}
于 2012-12-03T03:32:48.093 に答える
17

または、次のように expandMapping を使用できます。

min: {
    files: grunt.file.expandMapping(['path/*.js', 'path2/*.js'], 'destination/', {
        rename: function(destBase, destPath) {
            return destBase+destPath.replace('.js', '.min.js');
        }
    })
}

そして出力:

path/test.js => destination/path/test.min.js
path2/foo.js => destination/path2/foo.min.js

于 2013-09-02T00:19:31.210 に答える
14

以下の gruntjs は、ディレクトリの下にあるすべての js ファイルの縮小ファイルを作成するために機能します

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
    build: {
        files: [{
            expand: true,
            src: '**/*.js',
            dest: 'build/scripts',
            cwd: 'public_html/app',
        ext: '.min.js'
        }]
      }
    }
  });

  // Load the plugin that provides the "uglify" task.
  grunt.loadNpmTasks('grunt-contrib-uglify');

  // Default task(s).
  grunt.registerTask('default', ['uglify']);

};
于 2014-03-07T03:44:06.580 に答える
6

最小のうなり声のドキュメントから:

このタスクはマルチタスクです。つまり、ターゲットが指定されていない場合、grunt はすべての最小ターゲットを自動的に反復します。

だからあなたはこれを行うことができます:

  min: {
    min_a: {
       src:  'a.js',
       dest: 'a.min.js'
    },
    min_b: {
       src:  'b.js',
       dest: 'b.min.js'
    },
    min_c: {
       src:  'c.js',
       dest: 'c.min.js'
 }

これらのタスクの 'dist' という名前について特別なことは何もありません。

于 2013-02-02T10:22:24.237 に答える
4

の代わりにextファイルに名前を付けるオプションを使用します。.min.js.js

uglify: {
      build: {
        files: [{
            expand: true,
            src: '**/*.js',
            dest: 'build/scripts',
            cwd: 'app/scripts',
            ext: '.min.js'
        }]
      }
    }
于 2014-12-16T10:42:33.597 に答える
1

元のファイルを保持し、醜いファイルも作成するのが好きです。

uglify: {
  dist: {
    files: [{
      expand: true,
      src: '**/*.js',
      dest: 'destdir',
      cwd: 'srcdir',
      rename: function(dest, src) { return dest + '/' + src.replace('.js', '.min.js'); }
    }]
  }
},
于 2014-09-01T20:57:04.757 に答える
0

私はそれが監視タスクにのみ重要だと思います。

grunt 0.4では、これを行うことができます

  var filesA = 'a.js', filesB = 'b.js', filesC = 'c.js';

  ...

  min: {
      min_a: {
         src:  filesA,
         dest: 'a.min.js'
      },
      min_b: {
         src:  filesB,
         dest: 'b.min.js'
      },
      min_c: {
         src:  filesC,
         dest: 'c.min.js'
  }

  watch: {
      min_a: {
         files:  filesA,
         tasks: ['min:min_a']
      },
      min_b: {
         files:  filesB,
         tasks: ['min:min_b']
      },
      min_c: {
         files:  filesC,
         tasks: ['min:min_c']
      }
  }

その後、開始するだけgrunt watchで、すべてが自動的に正常になります。

于 2013-02-27T10:04:09.430 に答える
0

copy とgrunt-mindirectも使用できます。

copy: {
  dist: {
    src: 'a.js',
    dest: 'a.min.js'
  }
},
minidirect: {
  all: 'js/min/*.min.js'
}

これはうまくいくはずです。

于 2012-12-04T11:08:03.480 に答える