Piszę kod ES6 i przenoszę go na ES5 z Babel, a następnie zminimalizuj za pomocą Uglify. Wszystkie działają z pakietem internetowym za pośrednictwem gulp. Chciałbym użyć zewnętrznych map źródłowych (aby zachować możliwie jak najmniejszy rozmiar pliku).Zewnętrzne mapy źródłowe dla zminimalizowanego, transpiled kodu ES6 z opakowaniem internetowym i gulpem
Zadaniem łyk jest dość prosty - wszyscy funky rzeczy jest w config 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
})
]
};
Powyższe działa i tworzy robocze mapy źródłowe - ale są one wbudowane.
Jeśli zmienię plik webpack.config.js, tak aby było napisane devtool: "#source-map"
, mapa źródłowa jest tworzona jako osobny plik (przy użyciu nazwy pliku sourceMapFilename
). Ale nie jest to możliwe do użycia - narzędzia programistów Chrome nie wydają się tego rozumieć. Jeśli usuniemy webpack.optimize.UglifyJsPlugin
, mapa źródłowa będzie użyta - ale kod nie jest zminimalizowany. Tak więc mapa źródłowa działa dla dwóch pojedynczych kroków, ale nie wtedy, gdy są one uruchamiane sekwencyjnie.
Podejrzewam, że krok uglify ignoruje zewnętrzny plik z poprzedniej strony transplera, więc generowany przez niego plik jest oparty na strumieniu, który oczywiście nie istnieje poza haustem. Stąd nieużyteczna mapa źródłowa.
Jestem całkiem nowym użytkownikiem pakietu internetowego, więc być może brakuje mi czegoś oczywistego.
Co usiłuję zrobić jest podobna do tej kwestii, ale z WebPacka zamiast browserify: Gulp + browserify + 6to5 + source maps
z góry dzięki.
Co dokładnie pokazuje Chrome, co sprawia, że nie rozumie go? O ile mi wiadomo, '# source-map' powinno działać. – loganfsmyth
@ loganfsmyth, jak powiedziałem w pytaniu, działa w izolacji, ale nie wtedy, gdy masz transpiler AND minification, gdzie oba kroki tworzą zewnętrzną mapę źródłową. Chrome po prostu pokazuje zminimalizowany plik. Jeśli zostawiam wszystkie źródłowe mapy w linii, chrome pokazuje mi poszczególne pliki. – gotofritz