さまざまなjsonファイルからカスタム構成を読み取り、コーヒーソースファイル内のものをjsonファイルの内容に置き換えて、ソースファイルを連結できるある種のタスクを作成したいと考えています。
私のプロジェクトセットアップ:
./src
- file1.coffee
- file2.coffee
./config
/フォルダ1
- development.json (内容: {"key": "value1"}
- production.json (内容: {"key": "value2"}
/フォルダ2
- development.json (内容: {"key": "value3"}
- production.json (内容: {"key": "value4"}
./距離
- パッケージ名.coffee
- パッケージ名.js
file1.coffee が含まれています
myVar = '@@putkeyhere'
version = '@@version'
...
私はそれ自体が構成され、機能しているために実行されている grunt concat タスクを持っています:
concat: {
dist: {
src: ['<banner>', './src/*.coffee'],
dest: './dist/<%= pkg.name %>.coffee'
}
},
grunt-replace タスクを取得しました (既に連結されたファイルに対して "grunt replace" を実行すると、バージョンなどの置換は既に機能しています)
replace: {
dist: {
options: {
variables: {
'created': '<%= grunt.template.today("dd.mm.yyyy HH:MM:ss") %>',
'environment': 'dev',
'version': '<%= pkg.version %>'
},
prefix: '@@'
},
files: {
'dist/': ['./dist/<%= pkg.name %>.coffee']
}
}
},
そして最後にコーヒーのコンパイルタスク:
coffee: {
compile: {
files: {
'./dist/<%= pkg.name %>.js': ['./dist/*.coffee']
}
}
}
すべてのタスクはそれ自体で機能しますが、config-json ファイルから読み取り、コンテンツを連結されたコーヒー ファイルに置き換えてから、すべてのファイルを js にコンパイルする必要があります。
私はこのようなことを試しましたが、それは正しくありません:
grunt.registerTask('mytask', '', function (env) {
env = env || 'development';
if (env !== 'development' && env !== 'production') {
grunt.log.error("'" + env + "' is not valid environment");
return false;
}
var c = grunt.option('c');
if(c) {
// if i run the task "grunt mytask:production -c folder2 it should read
// ./config/folder2/development.json
// that works that way, but i dont think this is a good solution
var config = grunt.file.readJSON('./config/' + c + '/' + env + '.json')
} else {
// here i need to iterate for all folders in ./config, and do stuff for all
}
});
マルチタスクはオプションですか?しかし、config.json ファイルから動的に読み取るにはどうすればよいでしょうか?
あなたの助けに感謝!