SystemJS builder: Resolve module registration path correctly when bundling the app
我正在使用Angular2教程项目https://angular.io/docs/ts/latest/tutorial/并使用SystemJS Builder进行应用捆绑。但是,我正在为生成的捆绑包代码注册模块中的路径苦苦挣扎。
这是我的文件夹结构:
1 2 3 4 5 6 7 8 9 10 11 12 | wwwroot |-dist |-configs | |-systemjs.config.js | |-js | |-bundle.js //generated output bundle | |-main.js |-app.module.js |-app.component.js ...................... |
systemjs.config.js文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | (function (global) { System.config({ baseURL:'wwwroot', paths: { // paths serve as alias 'res:': 'lib/', 'ng:': 'lib/@angular/' }, // map tells the System loader where to look for things map: { // !!! the app is within the dist folder !!! 'app': 'dist', // angular bundles '@angular/core': 'ng:core/bundles/core.umd.js', // other Angular 2 stuff... '@angular/upgrade': 'ng:upgrade/bundles/upgrade.umd.js', // other libraries 'rxjs': 'res:rxjs', 'angular2-in-memory-web-api': 'res:angular2-in-memory-web-api', }, // packages tells the System loader how to load when no filename and/or no extension packages: { app: { //app entry point main: './main.js', format: 'register', defaultExtension: 'js' }, rxjs: { defaultExtension: 'js' }, 'angular2-in-memory-web-api': { main: './index.js', defaultExtension: 'js' } } }); })(this); |
Gulp任务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var systemjsBuilder = require('systemjs-builder'); gulp.task('bundle-app', function () { var builder = new systemjsBuilder('', 'wwwroot/dist/configs/systemjs.config.js'); return builder .bundle('wwwroot/dist/**/*', PATH.root + PATH.dist + '/js/bundle.min.js', { minify: false, mangle: true }) .then(function () { console.log('Build complete'); }) .catch(function (err) { console.log('Build error'); console.log(err); }); }); |
在生成的捆绑文件中,所有通过
但是,如果我从注册路径中手动删除所有
我应该如何配置构建器(或系统配置文件)以省略
任何建议将不胜感激。
谢谢!
终于找到了!
只需:
-
将根基础URL添加到构建器实例中,例如
new systemjsBuilder('wwwroot', 'wwwroot/dist/configs/systemjs.config.js'); -
将
.bundle('wwwroot/dist/**/*',... 更改为.bundle('[dist/**/*]', ... (方括号删除依赖项) -
在
systemjs.config.js 文件中,将应用程序包格式从register 更改为cjs (我的JS模块为CommonJS格式),或者完全删除该格式以启用模块自动检测。