SystemJS 捆绑 angular 5 的应用程序依赖项

A.格拉德基

我有 Angular 5 应用程序。我想尽可能地缩小和捆绑我的应用程序。

这是 SystemJS 的配置:

(function (global) {
    System.config({
        paths: {
            'npm:': "node_modules/"
        },
        map: {
            app: "dist",
            '@angular/animations': "npm:@angular/animations/bundles/animations.umd.min.js",
            '@angular/animations/browser': "npm:@angular/animations/bundles/animations-browser.umd.min.js",
            '@angular/common': "npm:@angular/common/bundles/common.umd.min.js",
            '@angular/common/http': "npm:@angular/common/bundles/common-http.umd.min.js",
            '@angular/compiler': "npm:@angular/compiler/bundles/compiler.umd.min.js",
            '@angular/core': "npm:@angular/core/bundles/core.umd.min.js",
            '@angular/forms': "npm:@angular/forms/bundles/forms.umd.min.js",
            '@angular/http': "npm:@angular/http/bundles/http.umd.min.js",
            '@angular/platform-browser': "npm:@angular/platform-browser/bundles/platform-browser.umd.min.js",
            '@angular/platform-browser/animations': "npm:@angular/platform-browser/bundles/platform-browser-animations.umd.min.js",
            '@angular/platform-browser-dynamic': "npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.min.js",
            '@angular/platform-server': "npm:@angular/platform-server/bundles/platform-server.umd.min.js",
            '@angular/router': "npm:@angular/router/bundles/router.umd.min.js",
            // other libraries
            'angular-froala-wysiwyg': "npm:angular-froala-wysiwyg/bundles/angular-froala-wysiwyg.umd.min.js",
            'ngx-bootstrap': "npm:ngx-bootstrap/bundles/ngx-bootstrap.umd.min.js",
            'ngx-infinite-scroll': "npm:ngx-infinite-scroll/bundles/ngx-infinite-scroll.umd.min.js",
            'ngx-moment': "npm:ngx-moment/bundles/ngx-moment.umd.min.js",
            'moment': "npm:moment/min/moment.min.js",
            'rxjs': "npm:rxjs",
            'tslib': "npm:tslib/tslib.js",
            'jszip': "npm:jszip",
            'pako': "npm:pako",
            '@progress': "npm:@progress",
            '@telerik': "npm:@telerik"
        },
        packages: {
            app: {
                main: "./main.js",
                defaultExtension: "js"
            },
            rxjs: {
                defaultExtension: "js",
            },
            jszip: {
                defaultExtension: 'js',
                main: './dist/jszip.js'
            },
            pako: {
                defaultExtension: 'js',
                main: './index.js'
            },
            'npm:@progress/kendo-angular-buttons': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-charts': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-dateinputs': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-dropdowns': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-dialog': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-grid': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-pdf-export': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-inputs': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-intl': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-l10n': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-excel-export': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-layout': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-scrollview': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-sortable': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-popup': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-resize-sensor': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-angular-upload': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-charts': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-data-query': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-date-math': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-drawing': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-file-saver': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-intl': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-ooxml': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@progress/kendo-popup-common': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@telerik/kendo-draggable': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@telerik/kendo-dropdowns-common': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@telerik/kendo-intl': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            },
            'npm:@telerik/kendo-inputs-common': {
                main: './dist/npm/main.js',
                defaultExtension: 'js'
            }
        }
    });
})(this);

gulpfile.js:

var gulp = require('gulp');
var tsc = require('gulp-typescript');
var systemjsBuilder = require('systemjs-builder');
var angularEmbed = require('gulp-angular-embed');
var del = require('del');

var tsProject = tsc.createProject('tsconfig.json');
var builder = new systemjsBuilder('', 'systemjs.config.js');

gulp.task('bundle-config', function () {
    return gulp.src('systemjs.config.js')
        .pipe(gulp.dest('dist/configs'));
});

gulp.task('embed-template', ['bundle-config'], function () {
    return gulp.src('app/**/*.ts')
        .pipe(angularEmbed())
        .pipe(gulp.dest('dist2'));
});

gulp.task('tsc', ['embed-template'], function () {
    return gulp.src('dist2/app/**/*.ts')
        .pipe(tsProject())
        .js.pipe(gulp.dest('dist'));
});

gulp.task('clean', ['tsc'], function () {
    return del(['dist2/**']);
});

gulp.task('bundle-app', ['clean'], function () {
    return builder
        .bundle('[dist/**/*]', 'production/app.bundle.min.js', {
                minify: true,
                mangle: true
            })
        .then(function () {
            console.log('Build complete');
        })
        .catch(function (err) {
            console.log('Build error');
            console.log(err);
        });
});

gulp.task('bundle-dependencies', ['clean'], function () {
    return builder
        .bundle('dist/**/* - [dist/**/*.js]', 'production/dependencies.bundle.min.js', {
                minify: true,
                mangle: true
            })
        .then(function () {
            console.log('Build complete');
        })
        .catch(function (err) {
            console.log('Build error');
            console.log(err);
        });
});

gulp.task('production', ['bundle-app', 'bundle-dependencies'], function () { });

和 index.html 包含以下内容:

<!DOCTYPE html>
<html>
<head>...</head>
<body>
  <my-app></my-app>

  <script src="node_modules/core-js/client/shim.min.js"></script>
  <script src="node_modules/zone.js/dist/zone.min.js"></script>
  <script src="node_modules/reflect-metadata/Reflect.js"></script>
  <script src="node_modules/systemjs/dist/system.js"></script>

  <script src="production/dependencies.bundle.min.js"></script>
  <script src="production/app.bundle.min.js"></script>
  <script>
      System.import('dist/configs/systemjs.config.js').then(function() {
          System.import('app').catch(function(err){ console.error(err); });
      });
  </script>
</body>
</html>

结果我在“dist”文件夹(里面包含html的js文件)中编译了应用程序。而且我还有“生产”文件夹,app.bundle.min.js其中包含“ ”,其中包含我所有的应用程序文件和“ dependencies.bundle.min.js”,其中包含我所有的依赖项,例如 angular、kendo、rxjs 框架。当我启动我的应用程序时,它会分别加载这 2 个缩小的文件和所有依赖项,例如:

/node_modules/rxjs/add/operator/mergeMap.js
/node_modules/@progress/kendo-angular-grid/dist/npm/data/data.iterators.js
/node_modules/@angular/animations/bundles/animations.umd.min.js

但它们都在“ dependencies.bundle.min.js”中。

我该如何解决?

A.格拉德基

我只是放在systemjs.config.js我的捆绑文件之前,它帮助了我:

...
<body>
    <ac-app></ac-app>

    <script src="systemjs.config.js"></script>
    <script src="production/dependencies.bundle.min.js"></script>
    <script src="production/app.bundle.min.js"></script>
    <script>
        System.import('app')
            .catch(function (err) {
                console.error(err);
            });
    </script>
</body>
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular2,将组件连接到一个捆绑包中,SystemJS失败

来自分类Dev

SystemJS Builder,不带Angular2的捆绑包,用于延迟加载

来自分类Dev

使用UMD捆绑包捆绑Angular 2应用程序(不构建供应商捆绑包)

来自分类Dev

我在哪里可以找到 angular 4 应用程序中的 systemjs.config.js?

来自分类Dev

如何使用 SystemJS 将 Angular 4 加载到 AngularJS 应用程序中?

来自分类Dev

使用 SystemJS 加载捆绑的 AMD 模块

来自分类Dev

将Angular2 AoT与systemjs-builder和汇总树摇动捆绑在一起

来自分类Dev

在 ASP.NET MVC 5 应用程序中,捆绑的 css 未反映原始 css 文件

来自分类Dev

如何在浏览器中使用捆绑的Angular 2应用程序?

来自分类Dev

如何通过Gulp正确捆绑Angular2-JS / Typescript应用程序?

来自分类Dev

在将Angular与MVC 5捆绑后,Cookie格式错误

来自分类Dev

Angular 4 - 配置 systemjs

来自分类Dev

如何使用SystemJS在Angular2应用程序中加载bootstrap.js,jQuery和其他模块

来自分类Dev

Laravel 5:从应用程序配置文件中删除开发依赖项

来自分类Dev

在MVC 5应用程序中使用autofac注入SignalR集线器的依赖项

来自分类Dev

依赖项注入在Angular 2入门应用程序中不起作用

来自分类Dev

如何在Angular 2 ES5中使用SystemJS

来自分类Dev

将所有JS文件捆绑到一个文件中以用于angular2应用程序

来自分类Dev

捆绑中的多个应用程序

来自分类Dev

使用应用程序部分捆绑领域

来自分类Dev

NPM应用程序中捆绑的MySQL

来自分类Dev

托管 Angular 5 应用程序需要什么?

来自分类Dev

Angular 2捆绑包

来自分类Dev

Angular CLI 捆绑问题

来自分类Dev

如何使用SystemJS指定库依赖项?

来自分类Dev

Heroku,捆绑程序因缺少依赖项而失败

来自分类Dev

使用systemjs加载cordova应用程序的文件

来自分类Dev

Angular 9 build生成ES5捆绑包以进行差异加载...发生未处理的异常:

来自分类Dev

Angular2 2.0.x和Rx 5 beta.12捆绑包

Related 相关文章

  1. 1

    Angular2,将组件连接到一个捆绑包中,SystemJS失败

  2. 2

    SystemJS Builder,不带Angular2的捆绑包,用于延迟加载

  3. 3

    使用UMD捆绑包捆绑Angular 2应用程序(不构建供应商捆绑包)

  4. 4

    我在哪里可以找到 angular 4 应用程序中的 systemjs.config.js?

  5. 5

    如何使用 SystemJS 将 Angular 4 加载到 AngularJS 应用程序中?

  6. 6

    使用 SystemJS 加载捆绑的 AMD 模块

  7. 7

    将Angular2 AoT与systemjs-builder和汇总树摇动捆绑在一起

  8. 8

    在 ASP.NET MVC 5 应用程序中,捆绑的 css 未反映原始 css 文件

  9. 9

    如何在浏览器中使用捆绑的Angular 2应用程序?

  10. 10

    如何通过Gulp正确捆绑Angular2-JS / Typescript应用程序?

  11. 11

    在将Angular与MVC 5捆绑后,Cookie格式错误

  12. 12

    Angular 4 - 配置 systemjs

  13. 13

    如何使用SystemJS在Angular2应用程序中加载bootstrap.js,jQuery和其他模块

  14. 14

    Laravel 5:从应用程序配置文件中删除开发依赖项

  15. 15

    在MVC 5应用程序中使用autofac注入SignalR集线器的依赖项

  16. 16

    依赖项注入在Angular 2入门应用程序中不起作用

  17. 17

    如何在Angular 2 ES5中使用SystemJS

  18. 18

    将所有JS文件捆绑到一个文件中以用于angular2应用程序

  19. 19

    捆绑中的多个应用程序

  20. 20

    使用应用程序部分捆绑领域

  21. 21

    NPM应用程序中捆绑的MySQL

  22. 22

    托管 Angular 5 应用程序需要什么?

  23. 23

    Angular 2捆绑包

  24. 24

    Angular CLI 捆绑问题

  25. 25

    如何使用SystemJS指定库依赖项?

  26. 26

    Heroku,捆绑程序因缺少依赖项而失败

  27. 27

    使用systemjs加载cordova应用程序的文件

  28. 28

    Angular 9 build生成ES5捆绑包以进行差异加载...发生未处理的异常:

  29. 29

    Angular2 2.0.x和Rx 5 beta.12捆绑包

热门标签

归档