我正在开发一个项目,我们同时拥有js和ts文件,它们应该合并到一个bundle文件中。
我正在使用gulp-typescript,我的配置如下:
gulp.src(cfg.ts_src)
.pipe(sourcemaps.init())
.pipe(typescript({
allowJs: true,
declaration: false,
diagnostics: false,
emitDecoratorMetadata: true,
experimentalDecorators: true,
module: "system",
moduleResolution: "classic",
noImplicitAny: true,
outFile: "./" + cfg.file,
preserveConstEnums: true,
pretty: true,
removeComments: true,
rootDir: "./static/" + cfg.dest,
target: "es5",
}))
.pipe(sourcemaps.write('.', { sourceRoot: "/static/", includeContent: false }))
我遇到的问题是,当配置只包含js文件时,它会创建一个包含代码的包。但是当配置中同时存在js和ts文件时,typescript会忽略javascript文件并仅编译ts文件。
如何创建包含来自js和ts文件的代码的包,并且还有ts文件的工作源图?
答案 0 :(得分:0)
看起来你正在使用旧版本的gulp-typescript。也许这是一个问题?以下是适合我的任务,并发出编译的ts + map和任何原始的JS:
gulp.task('build.js.dev', () =>
{
var tsProject = ts.createProject('tsconfig.json', {
typescript: require('typescript')
});
var tsResult = tsProject.src()
.pipe(sourcemaps.init())
.pipe(tsProject());
return merge([
//Write definitions
//tsResult.dts.pipe(gulp.dest(TEMP_TARGET_FOLDER)),
//Write compiled js
tsResult.js.pipe(sourcemaps.write(
".",
{
includeContent: true,
sourceRoot: __dirname + "/dist"
})).pipe(gulp.dest(TEMP_TARGET_FOLDER))]);
});
注意部分:tsResult.js.pipe(sourcemaps.write(
您可以参考gulp-typescript文档获取更多样本。
tsconfig与您的选项非常相似:
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"moduleResolution": "node",
"module": "commonjs",
"target": "es6",
"sourceMap": true,
"outDir": "dist",
"declaration": false,
"allowJs": true,
"jsx": "react",
"forceConsistentCasingInFileNames": true,
"types": [
"node",
"jasmine"
]
},
"exclude": [
"./node_modules",
"./dist",
"./.vscode"
]
}
希望这有帮助。
答案 1 :(得分:0)
首先尝试编译所有TS文件并将它们放在临时目录中,然后将所有这些文件与所有其他JS文件捆绑在一起。 同时将所有源图文件复制到最终目录。