当前位置: 首页 > 知识库问答 >
问题:

如何将选项传递给使用npm Babel和命令js的脚本[复制]

苏野
2023-03-14

有人能解释一下为什么我在检索选项'-x'时遇到困难(见下文)?

我必须逃避一些角色吗?

除此之外:

  • 工作原理:节点b.js解析url1 url2 url3-x
  • 但这不是:npm运行babel节点a.js解析url1 url2 url3-x

这是我的package.json档案

{
  "name": "commander_test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "babel-node": "babel-node --presets=env",
    "a": "npm run babel-node a.js parse url1 url2 url3 -x",
    "b": "node b.js parse url1 url2 url3 -x ",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "commander": "^2.18.0"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.3",
    "babel-preset-env": "^1.7.0",
    "babel-preset-es2015": "^6.24.1"
  }
}

npm运行a的结果:

> commander_test@1.0.0 a D:\repositories\node\commander
> npm run babel-node a.js parse url1 url2 url3 -x


> commander_test@1.0.0 babel-node D:\repositories\node\commander
> babel-node --presets=env "a.js" "parse" "url1" "url2" "url3"

[ 'node',
  'D:\\repositories\\node\\commander\\a.js',
  'parse',
  'url1',
  'url2',
  'url3' ]
parse : url1 => undefined
parse : url2 => undefined
parse : url3 => undefined

npm运行b的结果

> commander_test@1.0.0 b D:\repositories\node\commander
> node b.js parse url1 url2 url3 -x

[ 'C:\\Program Files\\nodejs\\node.exe',
  'D:\\repositories\\node\\commander\\b.js',
  'parse',
  'url1',
  'url2',
  'url3',
  '-x' ]
parse : url1 => true
parse : url2 => true
parse : url3 => true

这2个文件a.js和b.js是一样的。只是a.js使用es6模块和b.js通用模块

    import  program  from "commander"  // a.js
    let program = require("commander") // b.js

//from here it's the exact same code
    console.log(process.argv)
    program
      .version('0.0.1')
      .command('parse <urls...> ')
      .option('-x, --opt',  'opt')
      .action( function (urls, cmd) {
        urls.forEach(url => {
            console.log(`parse : ${url} => ${cmd.opt}`)
          });

      })

program.parse(process.argv)

共有1个答案

陆昂然
2023-03-14

我看到了安瑟[https://github.com/babel/babel/issues/1730#issuecomment-111247861]

多亏了Gajus,这里有了解决方案:他写道:

为了避免将来偶然发现这个线程的人感到困惑,这里有一个如何使用-的例子:

Babel节点--a--./foo--b在本例中:

--是传递给节点的选项(例如--debug或--throw deprecation)--b是传递给脚本的选项,即在process.argv下可用。

根据此解决方案,我将脚本更改为:

 "scripts": {
    "a": "babel-node -- a.js  parse url1 url2 url3  -x",
    "b": "node b.js parse url1 url2 url3 -x ",
    "test": "echo \"Error: no test specified\" && exit 1"
  }

成功了!!

谢谢

 类似资料:
  • 问题内容: 是否可以通过命令行将参数传递给MySQL脚本? 在此示例中,类似于@start_date的内容: 问题答案: 发现在网络上的答案在这里。 基本上,假设我们要运行以下查询: 我们可以这样传递“ start_date”和“ end_date”:

  • 问题内容: 我有一个PHP文件,需要从命令行运行(通过crontab)。我需要传递给文件,但我不知道如何。我试过了: 但是返回了此错误: 无法打开输入文件:myfile.php?type = daily 我能做什么? 问题答案: 该参数(在结束了阵列)仅适用于网络访问的页面。 您需要像调用它一样,并从数组中检索该参数(为,因为为)。 如果该页面也用作网页,则可以考虑两个选项。使用shell脚本和w

  • 问题内容: 我有一个名为的python文件,该python文件需要两个命令行参数:,Dockerfile如下所示: 如何通过这两个命令行参数,并以?我试过了但是没用。 问题答案: 您不能按预期使用和,因为它们是的选项。 启动一个终端。 将Docker容器作为守护程序启动。 要在Dockerfile中设置环境变量,请使用命令。 请参阅Dockerfile参考。 另一种选择是通过以下方式传递环境变量:

  • 问题内容: 我在通过SSH将响应传递到远程服务器上的bash脚本时遇到问题。 我正在用Python 3.6.5编写程序,该程序将SSH到远程Linux服务器。在此远程Linux服务器上,有一个正在运行的bash脚本,需要用户输入才能填充。无论出于何种原因,我都无法通过SSH从原始python程序传递用户输入,而无法填写bash脚本用户输入的问题。 main.py SSH.py 类中的最后一个是启动

  • 我想自动化它抛出脚本,这样每当它要求用户名时,我的脚本都会传递它 注意:即使是git推送命令也是通过脚本自动的 下面是我如何使用脚本自动执行git推送 它不止于此,但在代码命中git推送命令后,它会要求我输入密码和用户名。 那么,有没有办法让这个脚本传递它需要的所有信息,因为每次它都要求相同的用户名并传递

  • 问题内容: 我是Python和Eclipse的新手,在理解如何将命令行参数传递给在Eclipse(Pydev)中运行的脚本时遇到一些困难。 以下链接说明了如何将命令行参数传递给python脚本。 要将命令行参数传递给模块(来自上面链接的代码), 我需要输入python控制台 要么 如何在Eclipse(Pydev)中将相同的参数传递给Python脚本? 谢谢 ! 问题答案: 如果您希望程序以交互方