19

我的 package.json 看起来像:

{
  "name": "99-nodetest",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "babel-node --presets env app.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "babel-cli": "^6.26.0",
    "babel-preset-env": "latest"
  }
}

我要运行的 js 脚本是 app.js。我无法使用node app.js直接运行它,因为 app.js 包含新的语言语法。

因此,我必须按照上面定义的启动脚本,使用npm start通过 babel 运行它。这里没有问题。

我的问题是如何在命令行中直接运行cmd,可以吗?类似于:

npm run babel-node --presets env app.js

4

7 回答 7

24

您可以使用npx.

因为 Babel 7 总是解析相对于本地项目文件夹的插件和预设,所以您必须在@babel/preset-env本地安装到项目中。

npm i -D @babel/preset-env

之后,无需安装到项目中babel-node即可运行:npx

npx -p @babel/core -p @babel/node babel-node --presets @babel/preset-env app.js

如果您安装@babel/node到项目中,npx将更喜欢项目本地版本。


对于 Babel 6,可以使用以下命令:

npx babel-node --presets env app.js
于 2018-07-26T06:15:06.437 回答
21

node ./node_modules/babel-cli/bin/babel-node.js --presets env app.js

于 2018-07-26T02:52:58.057 回答
14

伟大的 gugley mugleys!这比它应该做的要难得多。

有关文档,请参见此处。TLDR;

Babel > version 7.0 必须进入你package.json的命令行才能运行。

npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node 

npx babel-node --presets @babel/preset-env imports/test.js 
于 2019-02-18T21:39:17.680 回答
8

全局安装@babe/node-

npm i -g @babel/node

然后 babel-node 命令在您的终端中可用。所以,你可以运行 -

babel-node --presets env app.js

顺便说一句,它应该只在开发环境中使用,从不推荐用于生产,因为它不必要地繁重且内存使用量很高。

于 2018-07-26T02:55:51.610 回答
2

Babel 节点已bin注册,因此在目录内安装时会生成可执行文件node_modules/.bin

您只需键入即可运行它。

node_modules/.bin/babel-node --presets env app.js

node它完成了与更长或替代npx版本相同的事情。

于 2019-01-24T16:28:53.267 回答
1

在 babel 7 中你可以运行这个:

npx babel app.js

于 2020-04-22T21:12:36.247 回答
-1

您可以通过首先告诉它来运行app.js文件:nodebabel-node

node ./node_modules/.bin/babel-node app.js

.babelrc在根项目中使用以下文件

{"presets": ["@babel/preset-env"]}

于 2020-01-14T17:18:07.707 回答