如何运行启用ES6function的Node.js应用程序?
我使用BabelJS (以前称为6to5)的require hook来运行具有es6features的节点应用程序:
// run.js require("babel/register"); require("./app.js6");
我调用node run.js
来运行我的app.js6 。 我需要安装BabelJS并为每个我想使用es6features的项目提供一个run.js。 我更喜欢像nodejs6 app.js6
这样的调用。 我怎样才能独立实现这个系统(Unix和Windows)?
将babel-cli
和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支持所有ES6function),您可以从package.json中删除它:
{ "dependencies": {}, "scripts": { "start": "node app.js" } }
这样做的一个好处是运行你的应用程序的命令保持不变,这有助于与其他开发人员一起工作。
如何configurationnode.js应用程序与es6支持和服务器重新加载文件更改 。
I.configuration步骤(从零开始创build项目):
1.进入您的项目主目录
npm init
//为项目创buildpackage.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,这取决于我们要使用什么样的function
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.在root项目目录下创build.babelrc文件(里面有package.json文件)
{ "presets": ["es2015", "stage-0"] }
5.创build两个目录:
src – 这里是在es6中写入文件的工作目录
dist – 这里的文件将使用babel编译成es5
您的项目根目录应如下所示:
- 项目
- SRC
- index.js //主项目文件
- DIST
- 的package.json
- .babelrc
- SRC
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 +启动节点服务器,对每个文件进行更改它将使用正在监视dist目录更改的nodemon重新启动节点服务器
9.最后的笔记
- 服务器将运行dist / index.js文件作为主文件。
- 文件dist / index.js将从src / index.js编译,所以应该有项目的主文件。
- dist目录应该被添加到忽略git(但不要忽略它为npm,如果它将是一个节点包)
10.运行服务器并开始在src目录下创build应用程序。
npm run serve
II。 更简单的方法(准备使用样板)
如果你的分数太多,那么你可以在github上find完整的woking样板 – https://github.com/maciejsikora/node-express-babel-boilerplate 。
您可以使用带有–harmony标志的节点来使用es6function运行脚本
你需要安装babel-register
和babel-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
方法进行设置的时候
我更喜欢像
nodejs6 app.js6
这样的调用。
您可以尝试使用babel-core API的包装解决scheme:
// 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特色脚本
参考 :官方使用文件
从babel 6开始,您现在必须安装babel-register
并使用以下内容
require("babel-register");
一定要安装babel es2015预设。