【问题标题】:how to run node / babel script directly in command line?如何在命令行中直接运行 node / babel 脚本?
【发布时间】: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

【问题讨论】:

标签: node.js npm npm-cli


【解决方案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
      

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

      【讨论】:

      • 如果您只想运行快速测试而不更改项目的最佳解决方案。
      猜你喜欢
      • 2013-12-17
      • 1970-01-01
      • 2015-08-27
      • 2018-06-18
      • 2021-03-20
      • 1970-01-01
      • 2016-07-06
      • 2019-09-02
      • 2014-12-04
      相关资源
      最近更新 更多