我使用gulpfile.js以这种方式编译我的tsconfig.json项目:
var ts = require('gulp-typescript');
var tsProject = ts.createProject('Modeler/tsconfig.json',
{ typescript: require('typescript') });
gulp.task('build:ts', function () {
var tsResult = tsProject.src()
.pipe(ts(tsProject));
return tsResult.pipe(gulp.dest('wwwroot/app'));
});
它工作正常并编译我的打字稿文件并将js文件放入wwwroot / app文件夹
出现问题然后我希望TypeScript编译器使用outFile属性输出单个连接文件
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"module": "commonjs",
"outFile": "modeler.js"
},
"exclude": [
"node_modules",
"wwwroot"
]
}
gulp任务会创建一个空输出文件,并创建包含* .ts文件旁边内容的* .js文件。
在不污染我的源文件夹的情况下,我应该如何修复创建所需的输出文件?
答案 0 :(得分:7)
您确定TypeScript资源中没有外部模块吗?
在这种情况下我遇到过类似的行为。使用outFile
选项时不允许使用外部模块,但编译器不会抱怨并发出空文件。另外,外部模块应该在“某处”(outDir
)中发出。
如果问题不是关于使用普通tsc -p .
的外部模块的行为与使用gulp-typescript
的行为相同吗?
答案 1 :(得分:3)
为了这个目的,我建议使用gulp-concat。 Gulp包不会违反Gulp的原则。
var concat = require('gulp-concat');
gulp.task('scripts', function() {
return gulp.src('./lib/*.js')
.pipe(concat('all.js'))
.pipe(gulp.dest('./dist/'));
});
答案 2 :(得分:1)
我相信TypeScript编译器的--outDir
选项是什么。请参阅https://github.com/Microsoft/TypeScript/wiki/Compiler-Options,请查看gulp-typescript documentation,其中指明:
outDir(string) - 将输出移动到另一个(虚拟)目录。 请注意,您仍然需要gulp.dest将输出写入磁盘。