W przypadku kodu po stronie klienta robisz właściwą rzecz. babelify
i wyślij do klienta.
W przypadku kodu po stronie serwera po prostu zrobiłbym zwykłą kompilację przy użyciu babel-cli
Według http://babeljs.io/docs/setup/#babel_register , niebabel-register
jest przeznaczony do użytku produkcyjnego - Wymagany hak jest zalecany przede wszystkim w prostych przypadkach.
dla Babel 6+
Od wersji Babel 6 żadne transformacje nie są domyślnie uwzględniane. Zacznijmy więc od zainstalowania babel-cli
i babel-preset-es2015
.
$ npm install --save-dev babel-cli babel-preset-es2015
Dodaj transformację do swojego .babelrc
pliku - to jest moduł końcowy, który pobraliśmy powyżej. Zapoznaj się z pełną listą ustawień wstępnych, aby zobaczyć, które z nich najlepiej Ci odpowiadają.
{
"presets": ["es2015"]
}
Dodaj build
skrypt do swojego package.json
. Poniżej src
znajdują się pliki wejściowe i build
przekształcone pliki wyjściowe
"scripts": {
"build": "babel src -d build"
}
Następnie zbuduj to!
$ npm run build
Następnie uruchom kod. W tym momencie będziesz chciał wykonywać pliki w swoim build
katalogu
$ npm start
dla Babel <= 5, po prostu użyj haka require.
require("babel/register");
Wszystkie kolejne pliki wymagane przez węzeł z rozszerzeniami .es6 , .es , .jsx i .js zostaną przekształcone przez Babel. Polyfill jest również automatycznie wymagane.
Będziesz mógł zachować swoje pliki źródłowe w ES6, ale nadal wykonywać je za pomocą node server.js
Z twoich komentarzy wynika, że masz małe kłopoty. Zwróć szczególną uwagę na zaznaczoną na żółto część powyżej. Pierwszym plikiem może być tylko plik ES5, który jest uruchamiany przez sam węzeł. Wszystkie kolejne wymagania zostaną przekształcone przez Babel ...
Oto, jak może wyglądać typowa konfiguracja
server.js
require("babel/register");
var app = require("./app.js");
app.js
odpal to!
$ node server.js
require("babel/register");
node server.js
Unexpected reserved word: import ...
Właśnie napisałem wpis na blogu na ten temat
Dokumentacja Babeljs CLI ostrzega, co następuje:
To jest przykład, jak można skonfigurować skrypty npm do uruchamiania aplikacji z węzłem zamiast węzła babel.
"scripts": { "clean": "rm -rf build && mkdir build", "build-css": "node-sass scss/app.scss public/css/app.css", "build-server": "babel -d ./build ./server -s", "build": "npm run clean && npm run build-css && npm run build-server", "lint": "eslint source/ --quiet", "start": "node ./build/index.js", "debug": "node --debug ./build/index.js", "test": "for i in $(ls tests/); do babel-node \"./tests/${i}\" | faucet ; done", "validate": "npm run lint; npm run test && npm outdated --depth 0" },
Więcej szczegółów znajdziesz w poście na blogu
źródło
Ważne jest, aby rozważyć zalety i wady używania węzła babel w produkcji.
babel-node
zwiększa koszt uruchomienia od pół sekundy do jednej sekundy w przypadku zwykłego sprzętu. Ale jeśli Twoja aplikacja jest serwerem działającym od dawna, ten koszt uruchomienia nie ma większego znaczenia.Z drugiej strony,
src
/lib
idist
katalogówimport
z plików lokalnych, czy importujesz zsrc/myutils
czy zlib/myutils
? Używaniebabel-node
eliminuje ten problem.Używam Babel tylko do obsługi modułów. Teraz V8 właśnie udostępnił obsługę modułów 10 stycznia 2017 r. Mam nadzieję, że za kilka miesięcy zobaczymy obsługę modułów w Node pod flagą, co wyjaśnia mój powód, dla którego używam Babel do dyskusji.
źródło
Odpowiedź @ cuadramana jest dokładniejsza niż @naomik.
Odpowiadając krótko na twoje pytanie: nie,
babel-node
nie powinieneś przywoływać ich wprost.babel-node
jest prywatną biblioteką używaną przezbabel-cli
.Oficjalny samouczek zawiera wszystko, czego potrzebujesz, aby rozpocząć pracę w węźle (nie po stronie przeglądarki!): Https://github.com/babel/example-node-server . PRZECZYTAJ TO! Znalazłem tak wiele wprowadzających w błąd samouczków na blogu, które były używane w różnych sposobach, i uznałem ten artykuł za najłatwiejszy do naśladowania.
Bonus: w przeciwieństwie do tego, co myśli wielu ludzi, cała magia transpiling może być zainstalowana lokalnie (za pomocą
npm install --save-dev babel-cli nodemon babel-preset-es2015 babel-preset-stage-2
). Nie ma potrzeby globalnej instalacji Babel ani żadnego z jego modułów pomocniczych! Całkiem fajnie.źródło