Ich verwende den Require- Hook von BabelJS (früher 6to5 genannt), um Node-Apps mit es6features auszuführen :
// run.js
require("babel/register");
require("./app.js6");
Ich rufe node run.js
an, um meine app.js6 auszuführen . Ich muss BabelJS installieren und für jedes Projekt, das ich es6features verwenden möchte , eine run.js bereitstellen. Ich würde einen Anruf wie bevorzugen nodejs6 app.js6
. Wie kann ich dieses System unabhängig erreichen (Unix und Windows)?
javascript
node.js
ecmascript-6
babeljs
maiermic
quelle
quelle
babel-node
? babeljs.io/docs/usage/cli/#babel-nodeAntworten:
Fügen Sie die Abhängigkeiten
babel-cli
undbabel-preset-es2015
(auch bekannt als ES6) zur Datei package.json Ihrer App hinzu und definieren Sie einstart
Skript:{ "dependencies": { "babel-cli": "^6.0.0", "babel-preset-es2015": "^6.0.0" }, "scripts": { "start": "babel-node --presets es2015 app.js" } }
Anschließend können Sie einfach den folgenden Befehl ausführen, um Ihre App auszuführen:
Wenn Sie sich jemals dazu entschließen, Babel nicht mehr zu verwenden (z. B. wenn Node.js alle ES6-Funktionen unterstützt), können Sie es einfach aus package.json entfernen:
{ "dependencies": {}, "scripts": { "start": "node app.js" } }
Ein Vorteil davon ist, dass der Befehl zum Ausführen Ihrer App derselbe bleibt. Dies ist hilfreich, wenn Sie mit anderen Entwicklern zusammenarbeiten.
quelle
nodemon
oder anderen mit Ihren Einstellungen? Laden Sie den Server wirklich jedes Mal manuell neu, wenn Sie während der Entwicklung Änderungen an Dateien vornehmen?babel-cli
undpreset-env
installiert ist und wenn Sie Dinge direkt mögen (ohne npm run ... und die package.json-Bearbeitung erforderlich), lautet der Befehl (ausgegeben vom Projektstamm):$> ./node_modules/.bin/babel-node yourToolhere.js
So konfigurieren Sie die node.js-App mit es6-Unterstützung und Server-Reload beim Dateiwechsel .
I.Konfigurationsschritte (Projekt von Grund auf neu erstellen):
1.Gehen Sie im Terminal zu Ihrem Projekthauptverzeichnis
npm init
// Erstelle package.json für das Projekt2. Installieren Sie Abhängigkeiten
npm install --save-dev babel npm install --save-dev babel-cli npm install --save-dev babel-preset-es2015 npm install --save-dev babel-preset-stage-0 //*1 npm install --save-dev nodemon
1 - es kann auch Stufe 1 oder 2 sein, es hängt davon ab, welche Funktionen von es Wir verwenden möchten
3.Wir sollten in der Datei package.json so etwas haben (sicher wird die Paketversion anders sein, aber es ist in Ordnung):
"devDependencies": { "babel": "^6.5.2", "babel-cli": "^6.16.0", "babel-preset-es2015": "^6.16.0", "babel-preset-stage-0": "^6.16.0", "nodemon": "^1.11.0" }
4.Erstellen Sie die .babelrc-Datei im Stammprojektverzeichnis (es gibt die Datei package.json).
{ "presets": ["es2015", "stage-0"] }
5.Erstellen Sie zwei Verzeichnisse:
src - hier ist ein Arbeitsverzeichnis mit Dateien, die in es6 geschrieben wurden
dist - hier werden Dateien mit babel zu es5 kompiliert
Ihr Projektstammverzeichnis sollte folgendermaßen aussehen:
7. Fügen Sie zu package.json die erforderlichen Befehle hinzu:
"scripts": { "watch": "babel -w src/ -d dist/", "build": "babel src/ -d dist/", "serve": "babel -w src/ -d dist/ | nodemon --watch dist", "test": "echo \"Error: no test specified\" && exit 1" }
8. Verfügbare Befehle:
npm run watch
// startet watch watch Änderungen im src Verzeichnis und kompiliert in distnpm run build
// kompiliert Dateien aus dem src-Verzeichnis nach distnpm run serve
// Es wird der Knotenserver überwacht + gestartet. Bei jeder Dateiänderung wird der Knotenserver mit nodemon neu gestartet, das die Änderungen des dist-Verzeichnisses überwacht9. Schlussbemerkungen
10. Führen Sie den Server aus und erstellen Sie die App im Verzeichnis src .
II. Einfachere Möglichkeit (gebrauchsfertige Boilerplate)
Wenn es zu viele Punkte für Sie sind, ist auf github eine vollständige Woking-Boilerplate verfügbar - https://github.com/maciejsikora/node-express-babel-boilerplate .
quelle
Sie können einen Knoten mit dem Flag --harmony verwenden, um ein Skript mit es6-Funktionen auszuführen
quelle
Sie müssen installieren
babel-register
undbabel-preset-es2015
voreingestellt, welche inbabel-register
Optionen verwendet werden , um die KonvertierungES6
in dieES5
On-the-Fly-Transpilation zu aktivierenIhre run.js- Datei:
// require babel-register and set Babel presets options to es2015 require('babel-register')({ presets: [ 'es2015' ] }); require("./app.js6");
Hinweis : Jetzt benötigen Sie keine
.babelrc
Datei mehr, umBabel presets
Optionen festzulegen, da wir sie mit derrequire
Methode festlegenquelle
node.js
Versionen funktioniert, die nicht unterstützt werdenES6
(weniger als 4.x-Versionen). Jetztnode.js
VersionsunterstützungES6
node -r babel-register scripts.js
Dies ist die beste Lösung
npx babel-node scripts.js
! Babel-Knoten funktioniert im Falle eines Exit-Prozesses nicht gut und
kexec
Paket hilft auch in diesem Fall nicht (wie ich versucht habe)In beiden Fällen müssen Sie
.babelrc
Voreinstellungen und Plugins für Ihre App verwenden.npx
wird nur zur Ausführung von Bibliotheken verwendet, die nicht mitnpm
oder installiert sindyarn
. Ansonsten musst dunpm i -g babel-cli
und dannbabel-node script.js
quelle
Sie können die Wrapper-Lösung mit Babel-Core-API ausprobieren:
// Save as es6.js var babel = require("babel-core"); var argc = process.argv.length; babel.transformFile(process.argv[argc - 1], function (err, result) { eval(result.code); });
Führen Sie Ihr es6-Skript mit aus
node es6 thefile.js
Referenz : Dokument zur offiziellen Verwendung
quelle
Ab Babel 6 müssen Sie nun
babel-register
Folgendes installieren und verwendenrequire("babel-register");
Stellen Sie sicher, dass Sie auch die Voreinstellung babel es2015 installieren.
quelle
Verweisen Sie darauf:
https://stackoverflow.com/a/51485027/1549191
oder diese Kesselplatte:
Boilerplate: node-es6
quelle