Configuring tasks – Grunt: The JavaScript Task Runner
1ファイルずつ個別で指定する場合(対象ファイル数が少ない場合など)
grunt.initConfig({
uglify: {
static_mappings: {
files: [
{src: 'lib/a.js', dest: 'build/a.min.js'},
{src: 'lib/b.js', dest: 'build/b.min.js'},
{src: 'lib/subdir/c.js', dest: 'build/subdir/c.min.js'},
{src: 'lib/subdir/d.js', dest: 'build/subdir/d.min.js'},
]
}
}
});
指定フォルダ配下など、動的に指定する場合。filesの指定は配列でないといけないらしく、files: の後に[]を入れずにハマってしまった…
grunt.initConfig({
uglify: {
dynamic_mappings: {
files: [
{
expand: true, // true = 動的に指定する宣言
cwd: 'lib/', // 処理対象フォルダをgruntfileからの相対パスで指定
src: ['**/*.js'], // 処理対象ファイルをパターンで指定。この場合はフォルダcwdで指定したフォルダ配下のjs全て
dest: 'build/', // 出力フォルダをgruntfileからの相対パスで指定
ext: '.min.js', // 出力ファイルの拡張子
extDot: 'first' // 出力ファイル名を決定する拡張子の位置('first' or 'last')。元ファイルが'foo.a.b.js'の場合、'first'なら'foo.min.js'、'last'なら'foo.a.b.min.js'となる
}
]
}
}
});
これをCoffee Scriptで指定するとこんな感じ。
grunt.initConfig
uglify:
dynamic_mappings:
files: [
expand: true
cwd: 'lib/'
src: ['**/*.js']
dest: 'build/'
ext: '.min.js'
extDot: 'first'
]
ついでに、Coffee Scriptで複数のフォルダを指定するならこう。Coffee Scriptに慣れないのでこれまたハマってしまった。配列の中にオブジェクトを記載するなら、明示的に{}をつけてあげた方がいいみたい(つけなければならない?)
grunt.initConfig
uglify:
dynamic_mappings:
files: [
{
expand: true
cwd: 'lib/'
src: ['**/*.js']
dest: 'build/'
ext: '.min.js'
extDot: 'first'
},
{
expand: true
cwd: 'lib2/'
src: ['**/*.js']
dest: 'build2/'
ext: '.min.js'
extDot: 'first'
},
]