2017-09-13 59 views
0

不仅可以从项目根目录运行NPM脚本,也可以从子文件夹运行NPM脚本。但是,由于它不能告诉我当前的工作路径($ PWD)。NPM脚本如何使用我当前的工作目录(在嵌套子文件夹中时)

比方说,有这样的命令:

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

如果我的项目的根的子文件夹(例如,$PROJECT_ROOT/src/nested/dir)中运行npm run pwd,而不是打印出我的电流通路$PROJECT_ROOT/src/nested/dir,它总是给$PROJECT_ROOT回来。有什么方法可以告诉NPM脚本使用我当前的工作目录,而不是解决package.json驻留的位置?

基本上,我想拉一个约曼发电机到现有的项目,并使用它来NPM脚本,这样每个人都可以使用共享知识(例如,npm run generator),而不是学习任何东西约曼特定的(例如npm i yo -g; yo generator)。由于生成器基于当前工作路径生成文件,而NPM脚本始终解析为项目根目录,所以我不能在想要使用它的地方使用生成器。

回答

1

一个已知的解决方案是通过ENV变量注入。

例如:

声明在命令行的变量:

cwd="$(pwd)" npm run pwd

消耗的package.json将env变量:

"pwd": "cd $cwd && echo $PWD"

然而,总是传递cwd="$(pwd)"因为前缀看起来更像是一个黑客,有没有任何清洁/ bett er解决方案?

+0

+1因为我试图做同样的事情,并做到了这一点。看起来像一个应该内置在npm脚本中的功能。我不想要添加一个完整的依赖关系,只为我输入4个字母。 – oooyaya

相关问题