如何运行启用ES6功能的Node.js应用程序?

mai*_*mic 69 javascript node.js ecmascript-6 babeljs

我用的是需要挂钩BabelJS(原名6to5)与运行节点的应用程序es6features:

// run.js
require("babel/register");
require("./app.js6");
Run Code Online (Sandbox Code Playgroud)

我打电话node run.js来运行我的app.js6.我需要安装BabelJS并提供run.js每个我想使用es6features项目.我更喜欢这样的电话nodejs6 app.js6.如何独立实现此系统(Unix和Windows)?

Xåp*_* - 129

babel-cliand babel-preset-es2015(又名ES6)依赖项添加到应用程序的package.json文件并定义start脚本:

{
  "dependencies": {
    "babel-cli": "^6.0.0",
    "babel-preset-es2015": "^6.0.0"
  },
  "scripts": {
    "start": "babel-node --presets es2015 app.js"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,您只需执行以下命令即可运行您的应用:

npm start
Run Code Online (Sandbox Code Playgroud)

如果你决定停止使用Babel(例如,一旦Node.js支持所有ES6功能),你可以从package.json中删除它:

{
  "dependencies": {},
  "scripts": {
    "start": "node app.js"
  }
}
Run Code Online (Sandbox Code Playgroud)

这样做的一个好处是运行您的应用程序的命令保持不变,这有助于您与其他开发人员合作.

  • 值得注意的是,巴贝尔文档明确[警告不要在生产中使用babel-node](http://babeljs.io/docs/usage/cli/#babel-node). (19认同)
  • 那么`nodemon`或其他你的设置怎么样?每次在开发过程中对文件进行更改时,您是否真的手动重新加载服务器? (5认同)

Mac*_*ora 36

如何在文件更改时配置带有es6支持和服务器重新加载的node.js应用程序.


I.配置步骤(从头开始创建项目):

1.进入您的项目主目录的终端

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
Run Code Online (Sandbox Code Playgroud)

1 - 它也可以是阶段1或2,它取决于我们想要使用的es的哪些特征

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"
}
Run Code Online (Sandbox Code Playgroud)

4.在根项目目录中创建.babelrc文件(有package.json文件)

{
 "presets": ["es2015", "stage-0"]
}
Run Code Online (Sandbox Code Playgroud)

5.创建两个目录:

src - 这是工作目录,其中包含在es6中编写的文件

dist - 这里的文件将使用babel编译为es5

您的项目根目录应如下所示:

  • 项目
    • SRC
      • index.js //主项目文件
    • DIST
    • 的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"
}
Run Code Online (Sandbox Code Playgroud)

8.Available命令:

npm run watch //开始观察src目录中的监视更改并编译成dist

npm run build //将文件从src目录编译为dist

npm run serve //它正在做watch + start node server,在每个文件上更改它将使用nodemon重新启动节点服务器,这正在监视dist目录的更改

9.Final notes

  • 服务器将dist/index.js文件作为主文件运行.
  • 文件dist/index.js将从src/index.js编译,因此应该有项目的主文件.
  • 应该添加dist目录以通过git忽略(但如果它是节点包,则不要忽略它为npm)

10.运行服务器并开始在src目录中创建应用程序.

npm run serve
Run Code Online (Sandbox Code Playgroud)

II.更简单的方法(准备使用样板)

如果它对你来说太多了,那么github上提供了完整的woking样板 - https://github.com/maciejsikora/node-express-babel-boilerplate.


Saf*_*afi 16

您可以使用带有--harmony标志的节点来运行带有es6功能的脚本

  • 带--harmony标志的节点不支持[rest arguments](https://github.com/lukehoban/es6features#default--rest--spread).BabelJS支持的一个功能,我想使用它. (5认同)

ahm*_*mdy 6

您需要安装babel-registerbabel-preset-es2015预设其中用成babel-register选项来启用转换ES6ES5对即时transpilation

 npm install babel-register

 npm install babel-preset-es2015
Run Code Online (Sandbox Code Playgroud)

你的run.js文件:

// require babel-register and set Babel presets options to es2015
require('babel-register')({
   presets: [ 'es2015' ]
});

require("./app.js6");
Run Code Online (Sandbox Code Playgroud)

注意:现在您不需要.babelrc文件来设置Babel presets选项我们使用require方法设置它


Ser*_*zN1 6

  1. node -r babel-register scripts.js

这是最好的解决方案

  1. npx babel-node scripts.js

!Babel节点在退出过程中不能正常工作,kexec在这种情况下包也没有帮助(我试过)

在这两种情况下,您都需要使用.babelrc哪个应该为您的应用描述预设和插件.

npx仅用于执行未安装的库npmyarn.否则你需要npm i -g babel-cli然后babel-node script.js