如何在命令行中直接运行 node / babel 脚本?

Posted

技术标签:

【中文标题】如何在命令行中直接运行 node / babel 脚本?【英文标题】:how to run node / babel script directly in command line? 【发布时间】:2019-01-02 22:37:58 【问题描述】:

我的 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

【问题讨论】:

仅供参考(并制作链接):上述问题与my question here 【参考方案1】:

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

npx babel app.js

【讨论】:

npx(不像上面罗德里戈的V6答案)将所有需要的node_modules拉到缓存中吗? (因此做的不仅仅是即时编译+本地源代码的执行?因为我宁愿把自己限制在这个范围内)。 — 或者当本地文件 (app.js) 作为参数时,情况并非如此?【参考方案2】:

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

【讨论】:

node ./node_modules/babel-cli/bin/babel-node.js --presets env app.js 。注意:它实际上在 babel-cli 下。如果你改变你的答案,我会接受它 我最终留在了 Babel 6,而不是升级到 Babel 7,这样我就不必处理这种回归。 对于 2020 年以上阅读此文的任何人,Babel v7 的情况发生了很大变化!您可能需要寻找其他地方而不是这个接受的答案,它适用于 Babel 6!【参考方案3】:

您可以从node 运行app.js 文件,首先告诉它babel-node

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

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

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

【讨论】:

【参考方案4】:

您可以使用npx 执行 npm 包二进制文件。

因为 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

【讨论】:

2019年:npx babel-node --presets @babel/preset-env app.js @ArneJenssen 谢谢。更新了我的答案。不幸的是,使用 Babel 7 实际上比使用 Babel 6 更难【参考方案5】:

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

请参阅此处查看docs。 TLDR;

Babel > 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 

【讨论】:

太好了,谢谢! "默认情况下,npx 会检查 是否存在于 $PATH 或本地项目二进制文件中,然后执行。" npmjs.com/package/npx【参考方案6】:

Babel 节点注册了一个bin,因此在安装时会在node_modules/.bin 目录中生成一个可执行文件。

您只需键入即可运行它。

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

与较长的node 或备用npx 版本完成相同的事情。

【讨论】:

【参考方案7】:

全局安装@babe/node-

npm i -g @babel/node

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

babel-node --presets env app.js

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

【讨论】:

如果您只想运行快速测试而不更改项目的最佳解决方案。

以上是关于如何在命令行中直接运行 node / babel 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

在eclipse中直接运行servlet 如何配置tomcat

全局变量与局部变量解释,以下代码可直接复制到编译器中直接运行。

linux下的python脚本无法在windows下的IDLE环境中直接运行吗?请大侠指教!多谢多谢!!

C++ Openssl AES GCM 128bits代码示例,可wins10的visual studio 2017 中直接运行

超链接标签a的美化,点击图片文字还是图片都能够跳转至指定页面。以下内容可直接通过鼠标左键选取然后复制到编辑器中直接运行。

几个命令行命令的总结(node, babel-cli, babel-node)