Angular 2如何连接文件进行生产

时间:2016-06-06 09:43:46

标签: javascript html angularjs build angular

将Angular 2应用程序捆绑/连接用于生产的推荐方法是什么?理想情况下,我需要一个index.html和一个app.min.js文件。

Angular 2 docs介绍了webpack,但是对于这样一个简单的任务来说,这个工具似乎过于复杂。说实话,这个教程是我读过的最糟糕的教程之一。我花了两个小时试图适应我的应用程序而没有成功。

我也听说过GruntGulp等工具。哪种方法是将Angular 2应用程序构建到生产就绪工件中的最简单方法?

2 个答案:

答案 0 :(得分:0)

您可以使用Gulp SystemJS捆绑Angular2应用以进行制作。

这是一个examplesource我将我直接在HTML中引用的任何库捆绑到vendors.min.js中,以及所有应用程序代码以及通过我的system.config引用的任何库.js到app.min.js。

// Bundle dependencies into vendors file
gulp.task('bundle:libs', function () {
    return gulp.src([
        'node_modules/jquery/dist/jquery.min.js',
        'node_modules/bootstrap/dist/js/bootstrap.min.js',
        'node_modules/semantic-ui/dist/semantic.min.js',
        'node_modules/es6-shim/es6-shim.min.js',
        'node_modules/es6-promise/dist/es6-promise.min.js',
        'node_modules/systemjs/dist/system.src.js',
        'system.config.js',
      ])
        .pipe(concat('vendors.min.js'))
        .pipe(uglify())
        .pipe(gulp.dest('public/lib/js'));
});

// Compile TypeScript to JS
gulp.task('compile:ts', function () {
  return gulp
    .src([
        "src/**/*.ts",
        "typings/*.d.ts"
    ])
    .pipe(tsc({
        "module": "system",
        "moduleResolution": "node",
        "outDir": "public/dist/js",
        "target": "ES5"
    }))
    .pipe(sourcemaps.write('.'))
    .pipe(gulp.dest('public/dist'));
});

// Generate systemjs-based builds
gulp.task('bundle:js', function() {
  var builder = new sysBuilder('public', './system.config.js');
  return builder.buildStatic('app', 'public/dist/js/app.min.js');
});

// Minify JS bundle
gulp.task('minify:js', function() {
  return gulp
    .src('public/dist/js/app.min.js')
    .pipe(uglify())
    .pipe(gulp.dest('public/dist/js'));
});

gulp.task('scripts', ['compile:ts', 'bundle:js', 'minify:js']);

答案 1 :(得分:-1)

要将所有模块放入单个JS文件中,您需要利用TypeScript编译器配置中的outFile属性。

您可以在gulp中使用以下内容来执行此操作:

const gulp = require('gulp');
const ts = require('gulp-typescript');

var tsProject = ts.createProject('tsconfig.json', {
  typescript: require('typescript'),
  outFile: 'app.js'
});

gulp.task('tscompile', function () {
  var tsResult = gulp.src('./app/**/*.ts')
                   .pipe(ts(tsProject));

  return tsResult.js.pipe(gulp.dest('./dist'));
});

然后,您可以在处理链中添加任务以uglify生成的app.js文件。

我认为这个问题可以帮到你: