Ich schreibe ES6-Code und transpile es mit Babel zu ES5, dann minify mit Uglify. Alle laufen mit Webpack via Schluck. Ich würde gerne externe Quellkarten verwenden (um die Dateigröße so klein wie möglich zu halten).Externe Quellkarten für minimierten, transpilierten ES6-Code mit Webpack und Schluck
Die schluck Aufgabe ist ziemlich einfach - alle funky stuff in der webpack config:
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
})
]
};
Die oben genannten Arbeiten und schafft Arbeitskartengrund - aber sie sind inline.
Wenn ich webpack.config.js so ändere, dass devtool: "#source-map"
angezeigt wird, wird die Quellzuordnung als separate Datei erstellt (mit sourceMapFilename
als Dateiname). Aber es ist nicht verwendbar - Chrome Dev Tools scheint es nicht zu verstehen. Wenn ich die webpack.optimize.UglifyJsPlugin
entferne, ist die Quellkarte verwendbar - aber der Code wird nicht minimiert. So funktioniert Source Map für die zwei einzelnen Schritte, aber nicht, wenn sie nacheinander ausgeführt werden.
Ich vermute, dass der Uglify-Schritt die externe Quellkarte aus dem vorherigen transpiler-Schritt ignoriert, so dass die Quellkarte, die generiert wird, auf dem Stream basiert, der außerhalb von Schluck natürlich nicht existiert. Daher die unbrauchbare Quellkarte.
Ich bin ziemlich neu zu Webpack, so dass ich etwas offensichtliches verpassen kann.
Was ich versuche auf diese Frage ähnlich zu tun, sondern mit webpack statt browserify: Gulp + browserify + 6to5 + source maps
Vielen Dank im Voraus.
Was genau zeigt Chrome, wenn man sagt, dass er es nicht versteht? Soweit ich weiß, sollte '# source-map' funktionieren. – loganfsmyth
@loganfsmyth wie ich in der Frage gesagt habe, funktioniert es isoliert, aber nicht, wenn Sie beide transpiler UND minification haben, wo beide Schritte eine externe Quellkarte erstellen. Chrome zeigt einfach die minimierte Datei an. Wenn ich alle Quellkarten inline belasse, zeigt Chrome stattdessen die einzelnen Dateien an. – gotofritz