Untuk kode sisi klien , Anda melakukan hal yang benar. babelify
dan mengirimkannya ke klien.
Untuk kode sisi server , saya hanya akan melakukan build biasa menggunakan babel-cli
Menurut http://babeljs.io/docs/setup/#babel_register , babel-register
ini tidak dimaksudkan untuk penggunaan produksi - Hook Requirement terutama disarankan untuk kasus sederhana.
untuk Babel 6+
Mulai Babel 6, tidak ada transformasi yang disertakan secara default. Jadi mari kita mulai dengan menginstal babel-cli
dan babel-preset-es2015
.
$ npm install --save-dev babel-cli babel-preset-es2015
Tambahkan transformasi ke .babelrc
file Anda - ini adalah modul perst yang kami unduh di atas. Lihat daftar lengkap preset untuk melihat mana yang paling cocok untuk Anda.
{
"presets": ["es2015"]
}
Tambahkan build
skrip ke package.json
. Di bawah src
ini adalah file masukan Anda danbuild
file output yang diubah
"scripts": {
"build": "babel src -d build"
}
Lalu bangunlah!
$ npm run build
Kemudian jalankan kode Anda. Pada titik ini, Anda ingin menjalankan file di filebuild
direktori
$ npm start
untuk Babel <= 5, cukup gunakan hook yang dibutuhkan.
require("babel/register");
Semua file selanjutnya yang dibutuhkan oleh node dengan ekstensi .es6 , .es , .jsx dan .js akan diubah oleh Babel. Itu polyfill juga secara otomatis diperlukan.
Anda akan dapat menyimpan file sumber Anda di ES6 tetapi tetap menjalankannya menggunakan node server.js
Menurut komentar Anda, Anda tampaknya mengalami sedikit masalah. Beri perhatian khusus pada bagian yang disorot kuning di atas. File pertama Anda hanya bisa ES5, yang dijalankan oleh node itu sendiri. Semua kebutuhan selanjutnya akan diubah oleh Babel ...
Seperti inilah tampilan penyiapan biasanya
server.js
require("babel/register");
var app = require("./app.js");
app.js
nyalakan!
$ node server.js
require("babel/register");
server.js saya dan ketika saya menjalankannode server.js
saya mendapatkan kesalahan:Unexpected reserved word: import ...
jadi sepertinya tidak berfungsiSaya baru saja menulis posting blog tentang topik ini
Dokumentasi CLI Babeljs memperingatkan hal berikut:
Ini adalah contoh bagaimana Anda dapat menyiapkan skrip npm untuk menjalankan aplikasi Anda dengan node alih-alih babel-node.
"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" },
Anda dapat menemukan detail selengkapnya di entri blog
sumber
Penting untuk mempertimbangkan pro dan kontra penggunaan babel-node dalam produksi.
babel-node
memang menambah antara setengah detik hingga satu detik ke biaya awal, pada perangkat keras komoditas. Tetapi jika aplikasi Anda adalah server yang berjalan lama, biaya mulai tersebut tidak akan menjadi masalah.Di samping itu,
src
/lib
dan yang terpisahdist
import
dari file lokal, apakah Anda akan mengimpor darisrc/myutils
, atau darilib/myutils
? Menggunakanbabel-node
menghilangkan masalah itu.Saya hanya menggunakan Babel untuk dukungan modul. Sekarang V8 baru saja merilis dukungan untuk modul pada 10 Januari 2017. Semoga kita akan melihat dukungan modul di Node di bawah bendera dalam beberapa bulan, menjelaskan alasan saya menggunakan Babel moot.
sumber
Jawaban @ cuadraman lebih akurat dari @naomik.
Untuk menjawab pertanyaan Anda secara singkat: tidak,
babel-node
tidak boleh diminta secara eksplisit oleh Anda.babel-node
adalah perpustakaan pribadi yang dikonsumsi olehbabel-cli
.Tutorial resmi memiliki semua yang Anda butuhkan untuk bangun dan berjalan di node (bukan sisi browser!): Https://github.com/babel/example-node-server . MEMBACANYA! Saya menemukan begitu banyak tutorial blog menyesatkan yang menggunakan banyak cara, dan menemukan artikel ini yang paling mudah diikuti.
Bonus: bertentangan dengan apa yang dipikirkan banyak orang, semua keajaiban transparan dapat dipasang secara lokal (menggunakan
npm install --save-dev babel-cli nodemon babel-preset-es2015 babel-preset-stage-2
). Tidak perlu menginstal Babel atau modul pembantu apa pun secara global! Cukup bagus.sumber