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

Javascript 如何在启用ES6功能的情况下运行Node.js应用程序?,javascript,node.js,ecmascript-6,babeljs,Javascript,Node.js,Ecmascript 6,Babeljs,我使用of(以前称为6to5)运行节点应用程序,其中包括: 我调用节点run.js来运行我的app.js6。我需要安装BabelJS,并为我想使用ES6功能的每个项目提供一个run.js。我更喜欢像nodejs6 app.js6这样的调用。如何独立实现此系统(Unix和Windows)?您可以使用带有--harmony标志的节点来运行带有es6功能的脚本将babel cli和babel-preset-es2015(又称es6)依赖项添加到应用程序的package.json文件中,并定义启动脚本:

我使用of(以前称为6to5)运行节点应用程序,其中包括:


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

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

babel cli
babel-preset-es2015
(又称es6)依赖项添加到应用程序的package.json文件中,并定义
启动
脚本:

{
  "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"
  }
}
这样做的一个好处是,运行应用程序的命令保持不变,如果您与其他开发人员合作,这会有所帮助

我更喜欢像
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 thefile.js运行es6特色脚本


参考:从babel 6开始,您现在必须安装
babel寄存器
,并使用以下命令

require("babel-register");
同时确保安装babel es2015预设。

您需要安装并预设用于
babel寄存器的
选项,以启用动态转换
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
文件来设置选项,因为我们使用
require
方法来设置它

如何配置支持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文件中包含类似的内容(当然包版本会有所不同,但可以):

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

5.创建两个目录:

src-这里是使用es6编写的文件的工作目录

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

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

  • 计划
    • src
      • index.js//主项目文件
    • 距离
    • package.json
    • B.法律改革委员会
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.可用命令:

"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"
}
npm run watch
//在src目录中启动监视更改,并编译到dist

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

npm run service
//它正在执行watch+start node server,在每次文件更改时,它都将使用nodemon重新启动节点服务器,nodemon正在监视dist目录的更改

9.最后说明

  • 服务器将dist/index.js文件作为主文件运行
  • 文件dist/index.js将从src/index.js编译而来,因此应该有项目的主文件
  • git应将dist目录添加为ignore(但如果它是一个节点包,则不要为npm忽略它)
10.运行服务器并开始在src目录中创建应用程序

npm run serve

二,。更简单的方法(即用样板) 如果您的积分太多,那么github-上提供了完整的woking样板文件


  • node-r babel register scripts.js
  • 这是最好的解决办法

  • npx babel节点scripts.js
  • !!Babel节点在退出进程的情况下不能很好地工作,
    kexec
    包在这种情况下也没有帮助(正如我尝试的那样)

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

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

    参考以下内容:

    或者这个样板:


    您是否考虑过使用io.js而不是NodeJS+Babel?我不知道io.js。看起来不错,但不像BabelJS,它不支持。对。好的,请密切关注它,它的运行速度与NodeJS不同,因此我相信它很快就会得到支持。您正在寻找
    babel node
    ?可能希望签出具有--harmony标志不支持的节点。一个由BabelJS支持的功能,我想使用它。你可以看到现在支持rest参数。应该注意的是,babel文档是显式的。那么
    nodemon
    或其他与你的设置相关的功能呢?您真的要在开发过程中每次更改文件时手动重新加载服务器吗?文档中说:您不应该在生产中使用babel节点。由于缓存存储在内存中,因此内存占用率很高,这是不必要的负担。由于整个应用程序需要在运行中编译,因此您也将始终受到启动性能的影响。更新:2017年es,最好的常见预设是。只要安装了它,甚至不需要指定它……因此,只要安装了
    babel cli
    preset env
    ,并且如果您直接喜欢(不需要npm run…和package.json-editing)命令(从项目根目录发出)is:
    $>。/node_modules/.bin/babel node yourToolhere.js
    它有一些关于生产使用的警告,不适合生产使用require hook主要建议用于简单的情况。在这种情况下,我将如何在生产中运行我的应用程序?我需要编译我的
    "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"
    }
    
    npm run serve