要求用户输入npm脚本的值

要求用户输入npm脚本的值,npm,Npm,我有一个npm脚本,运行方式如下: npm run start:local -- -target.location https://192.1.1.1:8052/ URL参数是用户的本地IP 我想让用户输入这个值,因为每个人都不一样 可能吗?使用vanila npm脚本将非常好。简单地说,npm脚本将在您的shell环境中运行所需的命令 在shell脚本中,可以使用$N访问传递的参数,其中N=参数的位置 谈到您的案例,您想要运行的命令是 npm运行开始:本地---target.location

我有一个npm脚本,运行方式如下:

npm run start:local -- -target.location https://192.1.1.1:8052/
URL参数是用户的本地IP

我想让用户输入这个值,因为每个人都不一样


可能吗?使用vanila npm脚本将非常好。

简单地说,
npm脚本将在您的shell环境中运行所需的命令

在shell脚本中,可以使用
$N
访问传递的参数,其中N=参数的位置

谈到您的案例,您想要运行的命令是
npm运行开始:本地---target.location用户输入
用户输入需要替换为用户已传递的参数。假设用户将location作为第一个参数传递给脚本,则可以使用
$1
访问它

我创建了一个模型来证明这一点

您可以清楚地看到,我定义了
start:local
来访问第一个参数,然后将其传递给
start
脚本,该脚本随后会回显传入的参数

更新: 下面是以提示格式向用户询问值的脚本。

基本上,首先我要求用户输入,然后将其存储在变量中,并将变量作为参数传递给
npm start

工具书类

是否使用节点的?它有交互IO的方法。

如果您试图要求用户输入响应,您可以这样做

const readline=require(“readline”);
const reader=readline.createInterface({
输入:process.stdin,
输出:process.stdout,
错误:process.stderr
});
const ask=(消息,默认值=null)=>新承诺(解析=>{
读者。问题(信息,(回答)=>{
返回解析(response.length>=1?response:默认值);
});
});
(()=>{
let ip=等待询问(`请输入您的公共ip:`);
})();
用于获取ip值,然后用于生成此进程。这是一个纯JS解决方案,与操作系统无关

例如:

// package.json
"scripts": {
"start": "npm run start:local -- -target.location",
"prompt" "node prompt.js"
},


这回答了你的问题吗?不,它没有(或者至少我找不到要求用户输入参数的建议)。您可以从npm脚本调用bash脚本,该脚本读取用户的参数。这里有很多交互式bash脚本的例子。但是在node land中,我希望必须以URL=localhost npm run start的形式运行此脚本。您的
package.json
文件的“scripts”属性的内容是什么?据我所知,代码不要求用户输入一些值。我是不是错过了smth?我明白了。因此,您希望得到提示,而不是将位置作为参数传递,对吗?答案已更新为包含“ASK”功能。您的解决方案似乎需要一些bash脚本(“读取位置”命令是否运行某种bash脚本?)。我希望避免使用它,并使用vanila npm(如果可能的话)。接受来自
stdin
的输入是bash语法。但是,我相信你的问题是关于windows用户的问题。在这种情况下,我建议在中运行所有
npm脚本。
// prompt.js

const { spawn, execSync } = require('child_process');
const exec = commands => {
  execSync(commands, { stdio: 'inherit', shell: true });
};
const spawnProcess = commands => {
  spawn(commands, { stdio: 'inherit', shell: true });
};
   const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('What is your current ip? example: https://192.168.1.10:9009 ', (ip) => {
  console.log(`Starting server on: ${ip}`);
  exec(`npm run start -- ${ip}`);
  rl.close();
});