javascript - 如何在 Systemjs builder 任务中包含 zone.js、reflect-metadata 等?

标签 javascript angular systemjs systemjs-builder

我正在使用 system.js 和 systemjs builder 来创建 dist包含我的 angular2 应用程序的所有打包 javascript 文件的文件夹。

它工作得非常好,只是它不包含以下文件,这些文件当前静态包含在 index.html 中:

  • node_modules/zone.js/dist/zone.js
  • node_modules/reflect-metadata/Reflect.js
  • node_modules/systemjs/dist/system.src.js
  • node_modules/esri-system-js/dist/esriSystem.js

  • 如何强制 systemjs builder 包含这些依赖项?

    libs-bundle.js:
    var SystemBuilder = require('systemjs-builder');
    var builder = new SystemBuilder();
    builder.loadConfig('./systemjs.config.js').then(function() {
      return builder.bundle(
        'app - [app/**/*]', // build app and remove the app code - this leaves only 3rd party dependencies
        'dist/libs-bundle.js'
      );
    }).then(function() {
      console.log('library bundles built successfully!');
    });
    

    app-bundle.js
    var SystemBuilder = require('systemjs-builder');
    var builder = new SystemBuilder();
    builder.loadConfig('./systemjs.config.js').then(function() {
      return builder.bundle(
        'app - dist/libs-bundle.js', // build the app only, exclude everything already included in dependencies
        'dist/app-bundle.js'
      );
    }).then(function() {
      console.log('Application bundles built successfully!');
    });
    

    systemjs.config.js:
    /**
     * System configuration for Angular 2 samples
     * Adjust as necessary for your application needs.
     */
    (function(global) {
      System.config({
        paths: {
          // paths serve as alias
          'npm:': 'node_modules/'
        },
        // map tells the System loader where to look for things
        map: {
          // our app is within the app folder
          app: 'dist',
          // angular bundles
          '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
          '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
          '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
          '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
          '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
          '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
          '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
          '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
          // other libraries
          'rxjs': 'npm:rxjs',
          'angular2-in-memory-web-api': 'npm:angular2-in-memory-web-api',
          'ng2-slim-loading-bar': 'npm:/ng2-slim-loading-bar',
          'ng2-toasty': 'npm:/ng2-toasty',
          'primeng': 'npm:/primeng',
          '@angular2-material/core': 'npm:/@angular2-material/core',
          '@angular2-material/grid-list': 'npm:/@angular2-material/grid-list'
        },
        // packages tells the System loader how to load when no filename and/or no extension
        packages: {
          app: {
            main: './main.js',
            defaultExtension: 'js'
          },
          rxjs: {
            defaultExtension: 'js'
          },
          'esri-mods': {
            defaultExtension: 'js'
          },
          'angular2-in-memory-web-api': {
            main: './index.js',
            defaultExtension: 'js'
          },
          'ng2-slim-loading-bar': {
            main: 'index.js',
            defaultExtension: 'js'
          },
          'ng2-toasty': {
            main: 'index.js',
            defaultExtension: 'js'
          },
          'primeng': {
            defaultExtension: 'js'
          },
          '@angular2-material/core': {
            main: './core.umd.js',
            defaultExtension: 'js'
          },
          '@angular2-material/grid-list': {
            main: './grid-list.umd.js',
            defaultExtension: 'js'
          }
        },
        meta: {
          'esri/*': {
            build: false
          },
          'esri-mods': {
            build: false
          },
          'dojo/*': {
            build: false
          },
        }
      });
    })(this);
    

    最佳答案

    我会尝试在您的应用程序目录中为每个缺少的包执行 npm install

    npm i zone.js
    npm i reflect-js
    npm i systemjs
    npm i esri-system-js
    

    关于javascript - 如何在 Systemjs builder 任务中包含 zone.js、reflect-metadata 等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40528480/

    相关文章:

    javascript - 在表单上使用 jquery show() 和 hide()

    javascript - 为什么使用指数运算符 ** 用法会产生错误?

    组件库中的 Angular Font Awesome - FontAwesome : Could not find icon with iconName=times and prefix=fas

    typescript - 尽管使用 es6-promise.d.ts,但找不到名称 'Promise'

    javascript - 系统 JS 不加载模块

    javascript - Casperjs 使用 casper.each 迭代链接列表

    javascript - React-Tooltip 裁剪

    javascript - 如何在 Angular2 中嵌入视频?

    angular - 如何在 Angular2,agm-marker 中为自定义标记图标添加边框?

    javascript - 如何让 Safari 显示 es6 (systemJS) 异步模块中的错误?