我使用BabelJS(以前称为6to5)的require hook来运行带有es6features的node应用程序:
// run.js
require("babel/register");
require("./app.js6");
我调用node run.js
来运行我的app.js6。我需要安装BabelJS,并为每个想要使用es6features的项目提供一个run.js。我希望像这样调用:nodejs6 app.js6
。如何实现这个系统独立(Unix和Windows)?
我使用BabelJS(以前称为6to5)的require hook来运行带有es6features的node应用程序:
// run.js
require("babel/register");
require("./app.js6");
我调用node run.js
来运行我的app.js6。我需要安装BabelJS,并为每个想要使用es6features的项目提供一个run.js。我希望像这样调用:nodejs6 app.js6
。如何实现这个系统独立(Unix和Windows)?
在你的应用程序的package.json文件中添加babel-cli
和babel-preset-es2015
(又名ES6)依赖项,并定义一个start
脚本:
将 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支持所有ES6功能),你可以从package.json中移除它。
如果你决定停止使用Babel(例如一旦Node.js支持所有ES6功能),你可以从package.json中移除它:
{
"dependencies": {},
"scripts": {
"start": "node app.js"
}
}
其中一个好处是,运行应用的命令保持不变,这在与其他开发人员合作时非常有帮助。
nodemon
或其他工具有什么影响?在开发时每次修改文件后都需要手动重新加载服务器吗?请问。 您是否真的需要在每次修改文件时手动重新加载服务器,或者可以尝试使用 nodemon
或其他类似工具来自动重新加载呢? - Greenbabel-cli
和 preset-env
,并且如果您喜欢直接进行操作(无需使用 npm run... 和编辑 package.json),则可以从项目根目录发出以下命令: $> ./node_modules/.bin/babel-node yourToolhere.js
。 - Frank N如何配置支持ES6语法和当文件改动时自动重载的node.js应用程序。
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"
}
在项目的根目录下(有 package.json 文件),创建 .babelrc 文件。{
"presets": ["es2015", "stage-0"]
}
5.创建两个目录:
src - 这里是使用es6编写的工作目录文件
dist - 这里的文件将使用babel编译为es5
您的项目根目录应该如下所示:
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和启动node服务器,在每次文件更改时,nodemon会使用dist目录更改重新启动node服务器
9.最后注意事项
10.运行服务器并在src目录中开始创建应用程序。
npm run serve
如果以上步骤对您来说太繁琐,那么可以在 GitHub 上下载完整的可用性预制模板 - https://github.com/maciejsikora/node-express-babel-boilerplate。
babel
包在Babel 6中是无操作的。
Babel的CLI命令已从babel
包移动到babel-cli
包中。
考虑安装@babel/core
和@babel/cli
。将脚本更改为"babel src -d dist"
。 - YSLdevnode -r babel-register scripts.js
这是最好的解决方案。
npx babel-node scripts.js
!Babel node 在退出过程中存在问题,而 kexec 包在这种情况下也无法提供帮助 (我已经尝试过)。
在这两种情况下,你需要使用 .babelrc 文件来描述应用程序的预设和插件。
npx 仅用于执行未使用 npm 或 yarn 安装的库。否则,您需要运行命令 npm i -g babel-cli,然后运行命令 babel-node script.js。
您需要安装babel-register
和babel-preset-es2015
预设,将其用作babel-register
选项,以启用实时转译ES6
到ES5
的功能。
npm install babel-register
npm install babel-preset-es2015
// require babel-register and set Babel presets options to es2015
require('babel-register')({
presets: [ 'es2015' ]
});
require("./app.js6");
注意: 现在您不需要使用.babelrc
文件来设置Babel预设
选项,因为我们可以使用require
方法进行设置。
ES6
(小于4.x版本)的 node.js
版本。现在 node.js
版本已经支持 ES6
。 - ahmed hamdynpm init es6
这将创建一个带有"type": "module"
设置的package.json
文件。
package.json
中将type
设置为module
只会启用import
/export
语法。这会导致禁用require()
并且不设置某些全局变量,如__dirname
,这可能并不总是理想的。 - Besworksnodejs6 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);
});
使用 node es6 thefile.js
命令来运行你的 ES6 特性脚本。
参考资料: 官方的使用文档
babel-register
并使用以下内容。require("babel-register");
一定要安装 babel es2015 预设。
由于此页面上的大多数答案不再适用,截至2023年5月,以下是最新方法:
npm install --save-dev @babel/core @babel/cli @babel/preset-env
这将安装Babel核心、命令行界面和编译现代JavaScript代码的预设。
{
"presets": ["@babel/preset-env"]
}
这会告诉 Babel 使用 @babel/preset-env
预设,其中包括支持最新的 JavaScript 语法。
"dev": "babel -w src -d lib | nodemon lib",
这只是一个示例,它可以根据您的项目结构进行更改。
此脚本将从/src
目录编译您的JavaScript文件到/lib
目录,然后在编译后的文件上运行nodemon
。请注意,此脚本假定您的主入口文件名为index.js
。
更通用的脚本如下:
"<script name>: "babel -w <code directory> -d <final/dist directory> | <other scripts for running the server>"
babel-node
еҗ—пјҹhttps://babeljs.io/docs/usage/cli/#babel-node - Felix Kling