一尘不染

在生产中使用babel-node可以吗

node.js

我一直在使用babel-node和带有babelify转换的browserify开发站点,以支持ES6语法。

我只是想知道,我是否可以在生产环境中运行它, babel-node server 而不是 node server
在节点中运行ES6还需要其他哪些选项?

这是我正在运行的用于构建和开始开发的命令

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

阅读 304

收藏
2020-07-07

共1个答案

一尘不染

对于客户端代码 ,您正在做正确的事情。babelify并将其运送给客户。


对于服务器端代码 ,我将使用babel-
cli
进行常规构建

http://babeljs.io/docs/setup/#babel_registerbabel- register不能用于生产环境 -钩推荐用于简单的情况下的需要。

适用于Babel 6+

从Babel 6开始,默认情况下不包含任何转换。因此,让我们从安装babel-cli和开始babel-preset-es2015

$ npm install --save-dev babel-cli babel-preset-es2015

向您的.babelrc文件添加转换-
这是我们上面下载的perst模块。查看预设完整列表,以查看最适合您的预设

{
  "presets": ["es2015"]
}

build脚本添加到中package.json。以下src是您的输入文件,build是转换后的输出文件

"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


根据您的评论,您似乎遇到了一些麻烦。请特别注意上面黄色突出显示的部分。您的第一个文件只能是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
2020-07-07