如何链接 Gulp: Typescript to Babel to Webpack with source map?
How to chain in Gulp: Typescript to Babel to Webpack with source map?
我正在尝试创建一个 gulp 任务来转换
TS -> (ES6) -> Babel -> (ES5) -> Webpack -> [bundle.js, bundle.js.map]
源映射映射回原始 TS 代码的位置。
如何使用 gulp 执行此操作?
到目前为止,我已经设法让它从 TS -> ES6 -> Babel -> ES5
开始工作
// Build
gulp.task("build", ["clean"], () => {
const tsProject = ts.createProject("tsconfig.json", {});
const sourceMapOptions = {
sourceRoot: __dirname+"/src"
};
return tsProject.src()
.pipe(sourcemaps.init())
// Typescript
.pipe(tsProject())
.js
// Babel
.pipe(babel({
presets: ["es2015"],
plugins: ["transform-runtime"]
}))
// Webpack <-- ????
.pipe(webpack({})) // <-- ????
.pipe(sourcemaps.write(".", sourceMapOptions))
.pipe(gulp.dest("./dist"));
});
但是不知道如何将 webpack 添加到组合中。
由于仍然没有答案,这就是我最后所做的。
我必须分两步完成(想法来自 here):
Typescript -> (ES6) -> Babel -> (ES5)
Webpack
捆绑
- 使用
source-map-loader
获取生成的源映射
/** Typescript -> ES6 -> Babel -> ES5 */
gulp.task("ts-babel", function () {
const tsconfig = {
target: "es6",
lib: ["es5", "dom"]
}
const babelconfig = {
presets: ["es2015"],
plugins: ["transform-runtime"]
}
const tsProject = ts.createProject(tsconfig);
return gulp
.src("src/**/*.ts")
.pipe(sourcemaps.init())
.pipe(tsProject())
.js
.pipe(babel(babelconfig))
.pipe(sourcemaps.write("."))
.pipe(gulp.dest("build/es5"));
})
/** Webpack bundle */
gulp.task("webpack", ["ts-babel"], function () {
const config = {
devtool: "source-map",
output: {
filename: "app.bundle.js"
},
module: {
preLoaders: [
{
test: /\.js$/,
loader: "source-map-loader"
}
]
}
}
return gulp
.src("build/es5/**/*.js")
.pipe(webpack(config))
.pipe(gulp.dest("build/bundle"));
})
我正在尝试创建一个 gulp 任务来转换
TS -> (ES6) -> Babel -> (ES5) -> Webpack -> [bundle.js, bundle.js.map]
源映射映射回原始 TS 代码的位置。
如何使用 gulp 执行此操作?
到目前为止,我已经设法让它从 TS -> ES6 -> Babel -> ES5
// Build
gulp.task("build", ["clean"], () => {
const tsProject = ts.createProject("tsconfig.json", {});
const sourceMapOptions = {
sourceRoot: __dirname+"/src"
};
return tsProject.src()
.pipe(sourcemaps.init())
// Typescript
.pipe(tsProject())
.js
// Babel
.pipe(babel({
presets: ["es2015"],
plugins: ["transform-runtime"]
}))
// Webpack <-- ????
.pipe(webpack({})) // <-- ????
.pipe(sourcemaps.write(".", sourceMapOptions))
.pipe(gulp.dest("./dist"));
});
但是不知道如何将 webpack 添加到组合中。
由于仍然没有答案,这就是我最后所做的。
我必须分两步完成(想法来自 here):
Typescript -> (ES6) -> Babel -> (ES5)
Webpack
捆绑- 使用
source-map-loader
获取生成的源映射
- 使用
/** Typescript -> ES6 -> Babel -> ES5 */
gulp.task("ts-babel", function () {
const tsconfig = {
target: "es6",
lib: ["es5", "dom"]
}
const babelconfig = {
presets: ["es2015"],
plugins: ["transform-runtime"]
}
const tsProject = ts.createProject(tsconfig);
return gulp
.src("src/**/*.ts")
.pipe(sourcemaps.init())
.pipe(tsProject())
.js
.pipe(babel(babelconfig))
.pipe(sourcemaps.write("."))
.pipe(gulp.dest("build/es5"));
})
/** Webpack bundle */
gulp.task("webpack", ["ts-babel"], function () {
const config = {
devtool: "source-map",
output: {
filename: "app.bundle.js"
},
module: {
preLoaders: [
{
test: /\.js$/,
loader: "source-map-loader"
}
]
}
}
return gulp
.src("build/es5/**/*.js")
.pipe(webpack(config))
.pipe(gulp.dest("build/bundle"));
})