我有很好的用于 javascript 的 gulp browserify 工作流程,现在还有 typescript。它们将源文件与模块组合在一起,并生成一个 .js 文件以供在浏览器中使用。
但是,有了一个较旧的 javascript 项目,我现在想使用 typescript 引入新功能——而不是将所有内容都转换为 typescript。
理想情况下,我希望 browserify 检测和预编译 ts 和 tsx,并在 browserifying 之前将结果与 js 文件一起传递给 babel:
function compileBrowserify(file, folder, watch, typescript) {
// cache and packageCache is required for watchify to perform, debug produces sourcemaps. })
var bundlerRaw = browserify(file, { debug: true, cache: {}, packageCache: {}})
var bundler = watch ? watchify(bundlerRaw) : bundlerRaw
bundler = typescript ? bundler.plugin(tsify, { noImplicitAny: false, jsx: 'react', moduleResolution: 'node', target: 'ES6'}) : bundler
bundler.transform(babelify.configure({
presets: ['react', 'es2015', 'stage-0'],
}))
var rebundle = function() {
return bundler
.bundle()
.on('error', function(err) { console.error(err.toString()); this.emit('end'); })
.on('end', function() { console.log('Done browserifying'); })
.pipe(source("app/main.js"))
.pipe(buffer())
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(folder));
}
bundler.on('update', rebundle)
return rebundle()
}
此设置实际上可以编译并适用于 js 部分,但我的打字稿文件未捆绑。 是否可以以这种方式将打字稿文件添加到现有的 javascript 项目中?
注意:我目前正在添加一个 React tsx 文件,但假设常规 ts 文件的情况相同。
注意:我尝试手动将 tsx 文件“添加()”到 browserify 包,没有任何期望或结果。
注意: tsx 已编译,至少它在构建错误时失败,它只是没有放入包中。