How to use variables in npm scripts on windows
我有一个空的存储库,从中我们可以开始新的项目。在这个存储库中是另一个必须单独更新的存储库。每个项目都从这两个存储库开始,但有时在项目期间,它们不应该同时更新。
我正在尝试创建一个NPM脚本来克隆父存储库,然后它打开文件夹并克隆子存储库。
脚本有一个表示项目的变量,因此有一个文件夹名。
基于这个答案,我得出了以下结论:
1 | "new_project":"git clone x:/parent_repo $PROJECT & cd $PROJECT & git clone x:/child_repo" |
我像这样运行命令:
不幸的是,这会创建一个名为
也尝试过:
1 2 3 | "new_project":"git clone x:/parent_repo $PROJECT & cd $PROJECT & git clone x:/child_repo" npm run new_project --PROJECT new_project_name |
或运行
1 | npm run new_project -- --PROJECT=new_project |
同样的结果。
大多数这些解决方案似乎在Linux机器上工作,但不适用于Windows。
字符串中的变量似乎没有被这样读取。我试过
1 | "git clone x:/parent_repo"+$PROJECT+" & cd"+$PROJECT+" & git clone x:/child_repo" |
但那给了我语法错误。
如何成功地从命令行传递可在NPM脚本中使用的变量?
命令必须是单行。
我在Windows上使用git bash作为cli
NPM版本:2.14.20
所以,我链接的答案不起作用,似乎因为操作系统的不同而在我的机器上失败了。
这适用于Linux:
为了在Windows上工作,需要使用
所以上面的窗口变成:
还要注意,如果您想要引用配置变量,那么必须以同样的方式对该变量进行转义。所以在窗户上,
您可以使用
1 2 3 4 5 6 7 | { "name" :"myapp", "config" : {"folder":"myfolder" }, "scripts" : { "new_project":"git clone x:/parent_repo $npm_package_config_folder & cd $npm_package_config_folder & git clone x:/child_repo" } } |
然后:
1 2 3 | npm config set myapp:folder mynewfolder npm run newproject |
But in my opinion, the better way is to use an external NodeJS custom script and run it with a npm script.
如果你看下面的页面:https://github.com/npm/npm/pull/5518(在你链接的答案上)
1 | "new_project":"git clone x:/parent_repo $PROJECT & cd $PROJECT & git clone x:/child_repo" |
然后:
1 | npm run --PROJECT new_project_name |