プロジェクト紹介
私のプロジェクトは、単一ページのストアフロントです。プロジェクトには複数のモジュールがあり、各モジュールには一連の controller.js、view.js、model.js ファイル、および template.html ファイルが含まれています。また、requirejs を使用して依存関係を管理します。
問題文
grunt-requirejs の参照モジュールへのパスを提供するために mainConfigFile を使用したいと考えています。私のmainConfigFileのrequire.configの一部は別のファイル(base.dependency.config)に保存され、require.config.pathsは実行時にアンダースコアでつなぎ合わされます。
base.dependency.config
config = {
baseDependencyConfig: {
paths: { ... }
shim: { ... }
}
}
main.js
var dependencies = config.baseDependencyConfig;
var basePaths = config.baseDependencyConfig.paths;
var extensionPaths = {
// extra sets of paths
};
// combine base paths and extension paths at runtime using underscore
var dependencyPaths = _.extend(basePaths, extensionPaths);
dependencies.paths = dependencyPaths;
require.config(dependencies);
// application startup
require(['app', 'eventbus']) {
// code
}
エラー
ただし、grunt requirejs は mainConfigFile を無視しています。実際には、require.config パスの下で「app」が
'app': 'modules/base/app/base.app.controller'
私のうなり声ファイル:
module.exports = function (grunt) {
grunt.initConfig({
// ... other plugin config
requirejs: {
options: {
baseUrl: 'public',
// the paths for the named modules such as 'app' are defined
// in main.js under require.config paths
name: 'main',
include: [
'app',
'cart',
'category'
],
out: 'public/build/app-optimized.js',
mainConfigFile: 'public/main.js',
findNestedDependencies: true,
optimizeCss: 'none',
cssImportIgnore: 'style/style.css, style/mocha.css',
}
}
})
}
私のファイル構造
public
|--modules/
| |--base/
| | |--cart
| | |--category
| | |--category.controller.js
| | |--category.view.js
| | |--category.model.js
| | └-category.template.html
| |
| └--extension/
|
|--style/
|--image/
|--main.js <-- main config file
|--other .js files
- mainConfigFile、main.js は、他のいくつかのアプリケーション起動 js ファイルとともにルートに存在します。
- アプリケーション ファイルの大部分は、modules フォルダー内に存在します。
- 各モジュール フォルダーには、そのコントローラー、ビュー、モデル js ファイル、および template.html ファイルが含まれます。
編集
gruntFile は、別の mainConfigFile (main.js) セットアップで以前は機能していました。
require.config({
paths: {...}
shim: {...}
})
// application startup
require(['app', 'eventbus']) {
// code
}