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

时间:2015-02-28 14:10:20

标签: javascript node.js ecmascript-6 babeljs

我使用require hook BabelJS(以前命名为6to5)来运行es6features节点应用:

// run.js
require("babel/register");
require("./app.js6");

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

8 个答案:

答案 0 :(得分:124)

babel-clibabel-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"
  }
}

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

npm start

如果您决定停止使用Babel(例如,一旦Node.js支持所有ES6功能),您只需将其从package.json中删除:

{
  "dependencies": {},
  "scripts": {
    "start": "node app.js"
  }
}

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

答案 1 :(得分:35)

如何配置带有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

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"
}

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

{
 "presets": ["es2015", "stage-0"]
}

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"
}

8.Available命令:

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

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

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

9.Final notes

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

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

npm run serve

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

如果你的点太多,那么github上就可以使用完整的woking样板 - https://github.com/maciejsikora/node-express-babel-boilerplate

答案 2 :(得分:16)

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

答案 3 :(得分:6)

您需要安装babel-registerbabel-preset-es2015预设哪些用于babel-register选项以启用将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方法设置

答案 4 :(得分:6)

  1. node -r babel-register scripts.js
  2. 这是最好的解决方案

    1. npx babel-node scripts.js
    2. !Babel节点在退出过程中效果不佳,kexec包在这种情况下也无效(正如我尝试的那样)

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

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

答案 5 :(得分:3)

  

我更喜欢像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);
});

使用node es6 thefile.js

运行您的es6精选脚本

参考:官方usage doc

答案 6 :(得分:1)

从babel 6开始,您现在必须安装babel-register并使用以下

require("babel-register");

请务必同时安装babel es2015预设。

答案 7 :(得分:1)