Как запустить приложение Node.js с включенными функциями ES6?
Я использую перехватчик BabelJS (ранее назывался 6to5) для запуска приложений узлов с es6features:
// run.js
require("babel/register");
require("./app.js6");
Я вызываю node run.js
для запуска моего app.js6. Мне нужно установить BabelJS и предоставить run.js для каждого проекта, в котором я хотел бы использовать es6features. Я бы предпочел такой вызов, как nodejs6 app.js6
. Как я могу достичь этой системы самостоятельно (Unix и Windows)?
Ответы
Ответ 1
Добавьте зависимости babel-cli
и babel-preset-es2015
(aka ES6) к вашему файлу package.json приложения и определите start
script:
{
"dependencies": {
"babel-cli": "^6.0.0",
"babel-preset-es2015": "^6.0.0"
},
"scripts": {
"start": "babel-node --presets es2015 app.js"
}
}
Затем вы можете просто выполнить следующую команду для запуска вашего приложения:
npm start
Если вы решили отказаться от использования Babel (например, один раз Node.js поддерживает все функции ES6), вы можете просто удалить его из package.json:
{
"dependencies": {},
"scripts": {
"start": "node app.js"
}
}
Одно из преимуществ этого заключается в том, что команда запуска вашего приложения остается прежней, что помогает, если вы работаете с другими разработчиками.
Ответ 2
Как настроить node.js приложение с поддержкой es6 и перезагрузкой сервера при изменении файла.
I. Шаги настройки (создание проекта с нуля):
1.Go в терминале к основному каталогу вашего проекта
npm init
//создаем package.json для проекта
2.Установить зависимости
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 - это может быть этап 1 или 2, это зависит от того, какие функции мы хотим использовать
3. Мы должны иметь в файле package.json что-то вроде этого (наверняка версия пакета будет другой, но это нормально):
"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. Создайте файл .babelrc в корневой директории проекта (есть файл package.json)
{
"presets": ["es2015", "stage-0"]
}
5. Создайте два каталога:
src - вот рабочий каталог с файлами, записанными в es6
dist - здесь файлы будут скомпилированы для es5 с помощью babel
Корневой каталог проекта должен выглядеть следующим образом:
- Проект
- ЦСИ
- index.js//основной файл проекта
- расстояние
- package.json
- .babelrc
7.Добавьте в package.json необходимые команды:
"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. Доступные команды:
npm run watch
//запускает просмотр часов в каталоге src и компилируется в dist
npm run build
//компилирует файлы из каталога src в dist
npm run serve
//он запускает watch + start node сервер, при каждом изменении файла он перезапускает сервер node, используя nodemon, который отслеживает изменения каталога dist
9.Наконечные примечания
- Сервер будет запускать файл dist/index.js в качестве основного файла.
- Файл dist/index.js будет скомпилирован из src/index.js, поэтому должен быть основной файл проекта.
- каталог dist должен быть добавлен для игнорирования с помощью git (но не игнорировать его для npm, если он будет node).
10. Запустите сервер и запустите приложение в каталоге src.
npm run serve
II. Простой способ (готов к использованию шаблона)
Если для вас слишком много очков, тогда полная полная схема woking доступна на github - https://github.com/maciejsikora/node-express-babel-boilerplate.
Ответ 3
Вы можете использовать node с флагом -harmony для запуска script с функциями es6
Ответ 4
вам нужно установить babel-register
и babel-preset-es2015
, который используется в параметрах babel-register
to Enabled конвертировать ES6
в ES5
трансляция на лету
npm install babel-register
npm install babel-preset-es2015
ваш файл run.js:
// require babel-register and set Babel presets options to es2015
require('babel-register')({
presets: [ 'es2015' ]
});
require("./app.js6");
Примечание. Теперь вам не нужен .babelrc
файл, чтобы установить параметры Babel presets
. Когда мы устанавливаем его с помощью метода require
Ответ 5
-
node -r babel-register scripts.js
Это лучшее решение
-
npx babel-node scripts.js
Узел! Babel не работает kexec
в случае выхода, и пакет kexec
также не помогает в этом случае (как я пытался)
В обоих случаях вам нужно использовать .babelrc
который должен описывать пресеты и плагины для вашего приложения.
npx
использует только для выполнения библиотек, которые не установлены с npm
или yarn
. В противном случае вам нужно выполнить npm я -g babel-cli
а затем babel-node script.js
Ответ 6
Я бы предпочел вызов типа nodejs6 app.js6
.
Вы можете попробовать решение оболочки с помощью babel-core api:
// 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);
});
Запустите свой es6 с функцией script с помощью node es6 thefile.js
Ссылка: официальное использование doc
Ответ 7
Начиная с babel 6, вы должны установить babel-register
и использовать следующие
require("babel-register");
Обязательно установите предустановку babel es2015.
Ответ 8
Порекомендуйте это:
fooobar.com/info/39246/...
или этот шаблон:
Boilerplate: узел-es6