用tsickle编译的Angular 2不能由google-closure-compiler处理

时间:2016-10-11 06:13:33

标签: angular typescript google-closure-compiler bundling-and-minification tsickle

我有一个Angular 2打字稿项目,我想将其捆绑到一个JS文件中。引导程序:

main.ts

import {platformBrowser} from '@angular/platform-browser';
import {AppModuleNgFactory} from '../aot/dev/app/app.module.ngfactory' //generated code
import {enableProdMode} from '@angular/core';
enableProdMode();
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory).catch(e=>console.error(e));

我使用Angular 2的Ahead-of-Time编译器生成ngfactory.ts个文件。然后我运行tsickle将我的文件转换为兼容Google Closure Compiler的JS。这完成没有困难:

"node_modules/.bin/tsickle" -- -p ./

结果如下:

main.js

goog.module('C_.websites.learn.angular2.dev.main');var module = module || {id: 'C:/websites/learn/angular2/dev/main.js'};
import { platformBrowser } from '@angular/platform-browser';
var platformBrowser = platformBrowser; /* local alias for Closure JSDoc */
import { AppModuleNgFactory } from '../aot/dev/app/app.module.ngfactory';
var AppModuleNgFactory = AppModuleNgFactory; /* local alias for Closure JSDoc */ //generated code
import { enableProdMode } from '@angular/core';
var enableProdMode = enableProdMode; /* local alias for Closure JSDoc */
enableProdMode();
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory).catch(function (e) { return console.error(e); });

最后,我使用google-closure-compiler-js创建一个gulp任务,将所有JS捆绑到一个文件中。

gulpfile.js

const closureCompiler = require('google-closure-compiler-js').gulp();
gulp.task('closure-compiler', function() {
    return gulp.src('./dev/main.js')
        .pipe(closureCompiler({
            compilationLevel: 'SIMPLE',
            warningLevel: 'VERBOSE',
            outputWrapper: '(function(){\n%output%\n}).call(this)',
            jsOutputFile: 'build.js',
            createSourceMap: false
        }))
        .pipe(gulp.dest(appProd));
});

任务立即失败并出现许多错误。这是一个示例:

  

dev \ main.js:3(JSC_REFERENCE_BEFORE_DECLARE)   声明前引用的变量:module $ contents $ C_ $ websites $ learn $ angular2 $ dev $ main_platformBrowser

     

dev \ main.js:5(JSC_REFERENCE_BEFORE_DECLARE)   声明前引用的变量:module $ contents $ C_ $ websites $ learn $ angular2 $ dev $ main_AppModuleNgFactory

     

dev \ main.js:7(JSC_REFERENCE_BEFORE_DECLARE)   声明前引用的变量:module $ contents $ C_ $ websites $ learn $ angular2 $ dev $ main_enableProdMode

     

dev \ main.js:10(JSC_POSSIBLE_INEXISTENT_PROPERTY)   属性bootstrapModuleFactory从未在?

上定义      

dev \ main.js:3(JSC_INTERNAL_ERROR_UNEXPECTED_TOKEN)   内部错误:TypeCheck不知道如何处理IMPORT

     

dev \ main.js:3(JSC_INTERNAL_ERROR_UNEXPECTED_TOKEN)   内部错误:TypeCheck不知道如何处理IMPORT_SPECS   ...

我使用自2016年10月10日起从GitHub克隆的最新tsickle来源以及"google-closure-compiler-js": "^20160916.0.0"

我错过了一步吗?

0 个答案:

没有答案