gpt4 book ai didi

yo - NPM 脚本如何使用我当前的工作目录(在嵌套子文件夹中时)

转载 作者:行者123 更新时间:2023-12-03 13:44:02 25 4
gpt4 key购买 nike

很高兴我不仅可以从项目根目录还可以从子文件夹运行 NPM 脚本。但是,受限于它不能告诉我当前的工作路径 ($PWD)。

假设有一个这样的命令:

"scripts": {
...
"pwd": "echo $PWD"
}

如果我运行 npm run pwd在项目根目录的子文件夹中(例如, $PROJECT_ROOT/src/nested/dir ),而不是打印出我当前的路径 $PROJECT_ROOT/src/nested/dir ,它总是给出 $PROJECT_ROOT背部。有没有办法告诉 NPM 脚本使用我当前的工作目录而不是解析到 package.json 所在的位置?

基本上,我想将 Yeoman 生成器拉入现有项目并通过 NPM 脚本使用它,以便每个人都可以使用共享知识(例如 npm run generator )而不是学习任何特定于 Yeoman 的东西(例如 npm i yo -g; yo generator )。由于生成器根据当前工作路径生成文件,而 NPM 脚本始终解析为项目根目录,因此我无法在打算使用的地方使用生成器。

最佳答案

If you want your script to use different behavior based on what subdirectory you’re in, you can use the INIT_CWD environment variable, which holds the full path you were in when you ran npm run.



来源: https://docs.npmjs.com/cli/run-script

像这样使用它:
"scripts": {
"start": "live-server $INIT_CWD/somedir --port=8080 --no-browser"
}

更新 2019-11-19
$INIT_CWD仅适用于 *nix-like 平台。 Windows 需要 %INIT_CWD% .有点令人失望的是,Node.js 没有为我们抽象出来。解决方法:使用 cross-env-shell live-server $INIT_CWD/somedir.... -> https://www.npmjs.com/package/cross-env

关于yo - NPM 脚本如何使用我当前的工作目录(在嵌套子文件夹中时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46205456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com