Tôi đang viết mã ES6 và chuyển nó sang ES5 bằng Babel, sau đó rút gọn với Uglify. Tất cả đều chạy với webpack qua gulp. Tôi muốn sử dụng bản đồ nguồn bên ngoài (để giữ cho các tệp càng nhỏ càng tốt).Bản đồ nguồn bên ngoài cho mã ES6 đã được rút gọn, được biên dịch bằng gói webpack và gulp
Nhiệm vụ ngụm là khá cơ bản - tất cả những thứ sôi nổi là trong cấu hình webpack:
var gulp = require("gulp");
var webpack = require("gulp-webpack");
gulp.task("js:es6", function () {
return gulp.src(path.join(__dirname, "PTH", "TO", "SRC", "index.js"))
.pipe(webpack(require("./webpack.config.js")))
.pipe(gulp.dest(path.join(__dirname, "PTH", "TO", "DEST")));
});
webpack.config.js:
var path = require("path");
var webpack = require("webpack");
module.exports = {
output: {
filename: "main.js",
sourceMapFilename: "main.js.map"
},
devtool: "#inline-source-map",
module: {
loaders: [
{ test: path.join(__dirname, "PTH", "TO", "SRC"),
loader: "babel-loader" }
]
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
output: {
comments: false,
semicolons: true
},
sourceMap: true
})
]
};
Các công trình trên và nó tạo ra bản đồ nguồn làm việc - nhưng chúng là nội tuyến.
Nếu tôi thay đổi webpack.config.js sao cho nó hiển thị devtool: "#source-map"
, bản đồ nguồn được tạo dưới dạng tệp riêng biệt (sử dụng sourceMapFilename
làm tên tệp). Nhưng nó không thể sử dụng được - các công cụ phát triển Chrome dường như không hiểu nó. Nếu tôi xóa webpack.optimize.UglifyJsPlugin
bản đồ nguồn có thể sử dụng được - nhưng mã không được rút gọn. Vì vậy, bản đồ nguồn hoạt động cho hai bước riêng lẻ, nhưng không phải khi chúng chạy theo trình tự.
Tôi nghi ngờ bước uglify bỏ qua sourcemap bên ngoài từ bước transpiler trước đó, do đó, sourcemap nó tạo ra dựa trên luồng, tất nhiên là không tồn tại bên ngoài gulp. Do đó bản đồ nguồn không sử dụng được.
Tôi khá mới mẻ với webpack nên tôi có thể thiếu điều gì đó hiển nhiên.
Những gì tôi đang cố gắng làm là tương tự như câu hỏi này, nhưng với webpack thay vì browserify: Gulp + browserify + 6to5 + source maps
Cảm ơn trước.
Chrome hiển thị chính xác điều gì khiến bạn nói rằng nó không hiểu nó? Theo như tôi biết, '# source-map' sẽ hoạt động. – loganfsmyth
@loganfsmyth như tôi đã nói trong câu hỏi, nó hoạt động trong sự cô lập nhưng không phải khi bạn có cả transpiler AND minification, nơi cả hai bước tạo ra một bản đồ nguồn bên ngoài. Chrome chỉ hiển thị tệp được rút gọn. Nếu tôi để lại tất cả các bản đồ nguồn nội tuyến, chrome sẽ hiển thị cho tôi các tệp riêng lẻ thay thế. – gotofritz