Babel.js 如何在启用ES6功能的情况下运行Node.js应用程序?

klr1opcd  于 2022-12-08  发布在  Babel
关注(0)|答案(9)|浏览(254)

我使用BabelJSrequire hook(以前名为6to5)来运行具有es6特性的节点应用程序:

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

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

2exbekwf

2exbekwf1#

babel-clibabel-preset-es2015(aka 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"
  }
}

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

pb3s4cty

pb3s4cty2#

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

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编译为es 5

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

  • 投射
  • 源代码
  • index. js//主项目文件
  • 距离
  • package.json
  • .Babel

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节点服务器,每次文件更改时,它都将使用nodemon重新启动节点服务器,nodemon正在监视dist目录更改
9.最后说明

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

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

npm run serve

II.更简单的方法(现成的样板文件)

如果你觉得太多的话,可以在github -https://github.com/maciejsikora/node-express-babel-boilerplate上找到完整的工作模板。

uhry853o

uhry853o3#

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

r55awzrz

r55awzrz4#

  1. node -r babel-register scripts.js
    这是最好的解决办法
  2. npx babel-node scripts.js
    !Babel节点在退出进程的情况下不能很好地工作,kexec包在这种情况下也没有帮助(正如我所尝试的)
    在这两种情况下,你都需要使用.babelrc,它应该描述你的应用程序的预置和插件。
    npx仅用于执行未与npmyarn一起安装的库。否则,您需要先执行npm i -g babel-cli,然后再执行babel-node script.js
q3aa0525

q3aa05255#

您需要安装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方法设置它

wpcxdonn

wpcxdonn6#

我更喜欢像nodejs6 app.js6这样的电话。
您可以尝试使用babel-core api的 Package 器解决方案:

// 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

n53p2ov0

n53p2ov07#

npm init es6
它使用"type": "module"设置创建package.json文件。

rekjcdws

rekjcdws8#

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

require("babel-register");

确保也安装了Babeles2015预设。

相关问题