Ich habe einen Satz voneinander abhängiger Knoten.js-Module, die ich als ES6-Module erstellt habe, und ich möchte im Idealfall ein einzelnes Modul als Einstiegspunkt angeben und diese (mithilfe von grunt) in eine einzige Datei integrieren, die von einer Node-Anwendung benötigt wird.
grunt-babel scheint mit dieser Verpackung nicht umgehen zu können.
Ich weiß, dass browserify das für das tun kannbrowser und ich weiß, dass browserify Node-Module enthalten kann, aber ich konnte nicht herausfinden, wie browserify den Einstiegspunkt für ein einzelnes Modul in ein erforderliches Node-Modul transformiert.
Also, wenn meine Quelldatei (und Einstiegspunkt), src/hello.js
wurden:
import world from "./world.js";
export default function () {console.log("Hello" + world + "!");};
und src/world.js
wurden:
export default "world";
Ich möchte, dass es von einer normalen Node-Anwendung wie:
var hw = require("./dest/hello-world.js");
hw();
Wie müsste meine Grunt-Datei aussehen?
Antworten:
0 für die Antwort № 1Es stellte sich heraus, dass ich zwei Probleme hatte:
In meinem .babelrc
Datei, die ich brauchte:
{
"presets": ["es2015"],
"plugins": ["add-module-exports"]
}
... während ich in meiner Grunt-Datei Folgendes benötigte:
browserify: {
myNode: {
options: {
transform: [["babelify", {sourceMaps: true}]],
browserifyOptions: {
standalone: "dummyPlaceholder"
}
// Depending on your needs, you may also
// need `node: true` here or the options
// in the 2nd argument of the `browserify` call
// (as I required to allow GLOBAL.window = GLOBAL
// injection)
// at https://github.com/substack/node-browserify/issues/1277#issuecomment-115198436
},
files: {
"dist/<%= pkg.name%>-node.js": "src/node.js"
}
}
},
Das Plugin "Add-Modul-Exporte" war notwendig, um eine Änderung in Babel zu vermeiden, die Aufrufe wie var mod = require("mod").default;
statt nur var mod = require("mod");
.
Das standalone
Die Eigenschaft wird hier nicht wirklich zum Erstellen eines Globals verwendet, da sie in einer Modulumgebung (Node / CommonJS) verwendet wird. Die Anwesenheit der Eigenschaft ist jedoch erforderlich, um einen Export auszulösen.