Angular 2 rc 6
使用Typescript 2.0.2
编写。
我正在尝试学习Ahead-of-Time编译,详情请参考这里。看起来很简单:
- 运行
ngc
而不是Typescript编译器以生成.ngfactory.ts
文件 - 将
platformBrowserDynamic().bootstrapModule()
替换为platformBrowser().bootstrapModuleFactory()
我不确定如何将第一步应用到我的设置中。我使用gulp-typescript 2.13.6
将我的Typescript编译为JavaScript。
gulpfile.js
var ts = require('gulp-typescript');
var tsProject = ts.createProject('tsconfig.json', {
//Use TS version installed by NPM instead of gulp-typescript's built-in
typescript: require('typescript')
});
gulp.task('build-ts', function () {
return gulp.src(appDev + '**/*.ts')
.pipe(ts(tsProject))
.pipe(gulp.dest(appProd));
});
所以我的问题是:我如何将这些说明集成到我的工具中?我该如何让gulp-typescript
使用Angular编译器?我已经尝试过:
那么我的问题是:如何将这些说明集成到我的工具中?如何让gulp-typescript
使用Angular编译器?我尝试过:
var tsProject = ts.createProject('tsconfig.json', {
typescript: require('@angular/compiler') // or '@angular/compiler-cli'
});
没有运行ngc
就会抛出错误。我也尝试过。
var tsProject = ts.createProject('tsconfig.json', {
typescript: require('./node_modules/.bin/ngc')
});
这里执行了ngc
,但立即引发错误:
SyntaxError: 在ngc的第2行出现意外的字符串:basedir=$(dirname "$(echo "$0" | sed -e 's,\,/,g')")
我怀疑这是因为ngc
没有传递源目录(所需的命令是ngc -p path/to/project
)
基本上,是否有一种方法可以使用gulp-typescript
实现一步构建过程?(生成.ngfactory.ts
文件,然后将所有内容编译为JavaScript)
cb
和cb(err)
是什么?我需要安装child_process
插件吗?路径是否包括tsconfig.json
文件名,还是只是目录路径? - BeetleJuicecb
我相信是回调函数的缩写,所以在这段代码片段中,cb(err)
简单地将错误函数传递到回调函数中。我从 这里 的信息中改编了这个片段。child_process
是 gulp 4.0 及以上版本的内置模块。关于路径,来自上面的 Google 链接 中的说明是:“它接受一个-p
标志,该标志指向一个tsconfig.json
文件或包含该文件的目录。”因此,两者都可以。 - William Gilmour