/ / Packen von ES6-exprimierten Knotendateien in ein einzelnes Knotenmodul - node.js, grunt-browserify, grunt-babel

ES6-komprimierte Knotendateien in ein einzelnes Knotenmodul packen - node.js, grunt-browserify, grunt-babel

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 № 1

Es 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.