如何运行依赖包的npm脚本

如何运行依赖包的npm脚本,npm,Npm,我有一个包,它本身的package.json中有一个脚本,我希望它能够在我的顶级项目中运行。这个包是我的顶级项目依赖项之一。我正在寻找一种直接或间接调用dependency packages脚本的方法 假设我使用的模块名为foo,我要运行的脚本是updatefoata 我尝试使用语法npm run script来运行它,但这似乎是不推荐使用的功能,因为我在当前搜索结果中找不到它,但在其他(非常旧的)搜索结果中看到了它 npm run-script foo updateFooData # npm

我有一个包,它本身的
package.json
中有一个脚本,我希望它能够在我的顶级项目中运行。这个包是我的顶级项目依赖项之一。我正在寻找一种直接或间接调用dependency packages脚本的方法

假设我使用的模块名为
foo
,我要运行的脚本是
updatefoata

我尝试使用语法
npm run script
来运行它,但这似乎是不推荐使用的功能,因为我在当前搜索结果中找不到它,但在其他(非常旧的)搜索结果中看到了它

npm run-script foo updateFooData

# npm ERR! missing script: foo
我还研究了npm api,虽然
npm.commands.run脚本(args,callback)
可以完成我想要的任务,但我不知道如何将模块加载到npm中

{
  ...
  "scripts":{
    "foo:updateFooData": "node --eval \"... ??; npm.commands.run-script('updateFooData', callback)\""
  }
}

npm run foo:updateFooData
# Obviously fails
到目前为止,我发现唯一有效的方法是将CD放入子模块目录并从那里运行npm。这不是我的首选解决方案

cd node_modules/foo
npm run updateFooData
注:


这不是个好主意。您无法保证将安装哪个节点模块文件夹模块,因为NPM将尝试通过在尽可能高的级别安装共享包来优化空间@超光速


我发现了一些有用的东西:

如果正在运行的脚本运行脚本文件,则可以查看正在运行的文件的路径,并使用require命令运行脚本:

# if node_modules/foo/package.json looks like this
{
  "scripts": {
    "updateFooData":"scripts/updateFooData.js"
  }
}

# then package.json can look like this
{
  "scripts": {
    "foo:updateFooData":"node --eval \"require('foo/scripts/updateFooData.js')\""
  }
}

# or package.json can look like this
{
  "scripts": {
    "foo:updateFooData":"node node_modules/foo/scripts/updateFooData.js"
  }
}

# and you can run it like this
npm run foo:updateFooData

我不喜欢这个解决方案,因为它只在您运行的npm脚本是一个文件的情况下工作。它不适用于所有

我在尝试运行geoip-lite的updatedb脚本时遇到了这个问题。您应该使用将在依赖项目录中生成新shell的


因此,对于您的用例,请尝试
npm explore foo--npm run updatefooda

复制粘贴:
npm explore geoip lite--npm run updated b
作为一个警告,这不适用于windows惊人,来到这里是为了自动更新geoip lite,并了解了explore命令。这不是一个很好的主意。您无法保证将安装哪个节点模块文件夹模块,因为NPM将尝试通过在尽可能高的级别安装共享软件包来优化空间。我认为我编写此解决方案时不是这样,但现在是这样。谢谢你的信息。