我一直在使用babel-node和带有babelify转换的browserify开发站点,以支持ES6语法。
我只是想知道,我是否可以在生产环境中运行它, babel-node server 而不是 node server 在节点中运行ES6还需要其他哪些选项?
babel-node server
node server
这是我正在运行的用于构建和开始开发的命令
// npm run build browserify -t [babelify] client.js > public/js/bundle.js", // npm start babel-node server.js"
这是我的开发依赖
"babel": "^4.0.1", "babelify": "^5.0.3", "browserify": "^8.0.3"
对于客户端代码 ,您正在做正确的事情。babelify并将其运送给客户。
babelify
对于服务器端代码 ,我将使用babel- cli进行常规构建
据http://babeljs.io/docs/setup/#babel_register,babel- register是 不能用于生产环境 -钩推荐用于简单的情况下的需要。
babel- register
适用于Babel 6+
从Babel 6开始,默认情况下不包含任何转换。因此,让我们从安装babel-cli和开始babel-preset-es2015。
babel-cli
babel-preset-es2015
$ npm install --save-dev babel-cli babel-preset-es2015
向您的.babelrc文件添加转换- 这是我们上面下载的perst模块。查看预设的完整列表,以查看最适合您的预设。
.babelrc
{ "presets": ["es2015"] }
将build脚本添加到中package.json。以下src是您的输入文件,build是转换后的输出文件
build
package.json
src
"scripts": { "build": "babel src -d build" }
然后建立它!
$ npm run build
然后运行您的代码。此时,您将要执行目录中的build文件
$ npm start
对于Babel <= 5,只需使用require钩子即可。
require("babel/register");
扩展名 .es6 , .es , .jsx 和 .js 的节点所需的所有后续文件都将由Babel转换。该填充工具也需要自动。
您将能够将源文件保留在ES6中,但仍然可以使用 node server.js
node server.js
根据您的评论,您似乎遇到了一些麻烦。请特别注意上面黄色突出显示的部分。您的第一个文件只能是ES5,它由节点本身运行。 随后的 所有 需求 将由Babel进行转换…
这是典型设置的样子
server.js
// only ES5 is allowed in this file require("babel/register"); // other babel configuration, if necessary // load your app var app = require("./app.js");
app.js
// this file will be loaded through babel // you can now use ES6 here and in every other include
燃烧起来;动起来!
$ node server.js