81

我使用BabelJS(以前称为 6to5)的require 钩子来运行具有es6features的节点应用程序:

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

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

4

8 回答 8

144

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

然后您可以简单地执行以下命令来运行您的应用程序:

npm start

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

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

这样做的一个好处是运行您的应用程序的命令保持不变,如果您与其他开发人员一起工作,这会有所帮助。

于 2015-04-02T14:20:56.877 回答
40

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


一、配置步骤(从头开始创建项目):

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 - 也可以是 stage-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

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

  • 项目
    • 源代码
      • index.js //主项目文件
    • 距离
    • 包.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//它正在监视+启动节点服务器,在每次文件更改时,它将使用正在监视dist目录更改的nodemon重新启动节点服务器

9.最后的笔记

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

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

npm run serve

二、更简单的方法(准备使用样板)

如果你的分数太多,那么在 github - https://github.com/maciejsikora/node-express-babel-boilerplate上可以找到完整的 woking 样板。

于 2016-10-20T08:21:27.827 回答
18

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

于 2015-02-28T16:53:19.807 回答
7
  1. node -r babel-register scripts.js

这是最好的解决方案

  1. npx babel-node scripts.js

!Babel 节点在退出过程的情况下无法正常工作,并且kexec包在这种情况下也无济于事(正如我所尝试的那样)

在这两种情况下,您都需要使用.babelrc应该为您的应用程序描述预设和插件的内容。

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

于 2018-05-05T11:40:08.243 回答
6

您需要安装babel-registerbabel-preset-es2015预设哪些用于babel-register启用转换ES6ES5即时转译的选项

 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方法设置它

于 2016-01-25T21:06:21.553 回答
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);
});

运行您的 es6 特色脚本node es6 thefile.js

参考:官方使用文档

于 2015-07-20T09:43:59.043 回答
1

参考这个:

https://stackoverflow.com/a/51485027/1549191

或这个样板:

样板文件:node-es6

于 2018-07-23T18:20:19.967 回答
1

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

require("babel-register");

一定要安装 babel es2015 预设。

于 2015-12-26T15:58:42.563 回答