grunt-contrib-requirejsタスクを使用して、require.jsに基づいてプロジェクトをビルドします。次のコマンドを使用して、プロジェクトディレクトリ内にインストールします。
npm install grunt-contrib-requirejs --save-dev
ところで:--save-dev
package.jsonの開発依存関係にパッケージを追加します。プロジェクトでpackage.jsonを使用していない場合は、無視してください。
次のコマンドを使用して、gruntファイルにタスクをロードします。
grunt.loadNpmTasks('grunt-contrib-requirejs');
そして、grunt.initConfigに構成を追加します
requirejs: {
production: {
options: {
baseUrl: "path/to/base",
mainConfigFile: "path/to/config.js",
out: "path/to/optimized.js"
}
}
}
これで、require.jsのものを単一のファイルにビルドできます。このファイルは、実行することでuglifyjsで最小化されます。grunt requirejs
これをgruntファイルに追加することで、さまざまなタスクのセットをある種のメインタスクにバンドルできます。
grunt.registerTask('default', ['lint', 'requirejs']);
これにより、入力するだけgrunt
で、gruntは2つの「サブタスク」(lintとrequirejs)を使用してデフォルトのタスクを自動的に実行します。
特別な制作タスクが必要な場合:上記のように定義します
grunt.registerTask('production', ['lint', 'requirejs', 'less', 'copy']);
で実行します
grunt production
「本番」と「開発」の動作、つまりrequirejsタスク内で異なる動作が必要な場合は、いわゆるターゲットを使用できます。上記の構成例では、すでにとして定義されていproduction
ます。必要に応じて別のターゲットを追加できます(ところで、同じレベルにオプションオブジェクトを追加することで、すべてのターゲットのグローバル構成を定義できます)
requirejs: {
// global config
options: {
baseUrl: "path/to/base",
mainConfigFile: "path/to/config.js"
},
production: {
// overwrites the default config above
options: {
out: "path/to/production.js"
}
},
development: {
// overwrites the default config above
options: {
out: "path/to/development.js",
optimize: none // no minification
}
}
}
これで、両方を同時に実行することも、を使用してgrunt requirejs
個別にgrunt requirejs:production
実行することも、次の方法でさまざまなタスクで定義することもできます。
grunt.registerTask('production', ['lint', 'requirejs:production']);
grunt.registerTask('development', ['lint', 'requirejs:development']);
今あなたの質問に答えるために:
私は間違いなくあなたのプロジェクトでサブフォルダーを使用します。私の場合、開発用に「src」フォルダーを使用し、本番用に「htdocs」フォルダーにビルドします。私が好むプロジェクトレイアウトは次のとおりです。
project/
src/
js/
libs/
jquery.js
...
appname/
a.js
b.js
...
main.js // require.js starter
index.html
...
build/
... //some tmp folder for the build process
htdocs/
... // production build
node_modules/
...
.gitignore
grunt.js
package.json
上記を参照
これは可能ですが、監視タスクにrequirejsを追加することはお勧めしません。これはリソースを大量に消費するタスクであり、マシンの速度が著しく低下します。
最後になりましたが、r.jsをいじるときは十分に注意してください。特に、構成にディレクティブを追加して、r.jsを使用してプロジェクト全体を最適化する場合modules
。R.jsは、確認せずに出力ディレクトリを削除します。誤ってシステムルートとして設定された場合、r.jsはHDDを消去します。注意してください、私は私のgruntタスクを設定している間、しばらく前にhtdocsフォルダー全体を完全に消去しました... keepBuildDir:true
r.js構成で遊んでいるときは、常にオプションに追加してください。