我有一个包本身有一个脚本package.json
,我希望能够在我的顶级项目中运行.这个包是我的顶级项目依赖项之一.我正在寻找一种直接或间接调用依赖包脚本的方法.
让我们假设我正在使用的模块名称已命名foo
,我想运行的脚本是updateFooData
.
我尝试使用语法npm run-script <package> <...>
来运行它,但这似乎是不推荐使用的功能,因为我在当前的官方文档中找不到它,但我在其他(非常旧的)搜索结果中看到它.
npm run-script foo updateFooData
# npm ERR! missing script: foo
Run Code Online (Sandbox Code Playgroud)
我也查看了npm api,虽然npm.commands.run-script(args, callback)
我会做我想要的,我无法弄清楚如何将模块加载到npm
{
...
"scripts":{
"foo:updateFooData": "node --eval \"... ??; npm.commands.run-script('updateFooData', callback)\""
}
}
npm run foo:updateFooData
# Obviously fails
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现的唯一的工作是CD进入子模块目录并从那里运行npm.这不是我的首选解决方案.
cd node_modules/foo
npm run updateFooData
Run Code Online (Sandbox Code Playgroud)
Cez*_*ski 18
我试图运行geoip-lite的updatedb脚本.您应该使用npm explore命令,它将在依赖项目录中生成一个新shell.
所以对于你的用例,试试吧 npm explore foo -- npm run updateFooData
Nat*_*ate -1
笔记:
\n\n\n\n\n这不是一个好主意。您无法保证哪个 node_modules 文件夹模块将安装在中,因为 NPM 将尝试通过在可能的最高级别安装共享包来优化空间。\xe2\x80\x93 @superluminary
\n
我发现一些确实有效的东西:
\n\n如果您正在运行的脚本运行一个脚本文件,您可以查看它正在运行的文件的路径并使用 require 运行该脚本:
\n\n# if node_modules/foo/package.json looks like this\n{\n "scripts": {\n "updateFooData":"scripts/updateFooData.js"\n }\n}\n\n# then package.json can look like this\n{\n "scripts": {\n "foo:updateFooData":"node --eval \\"require(\'foo/scripts/updateFooData.js\')\\""\n }\n}\n\n# or package.json can look like this\n{\n "scripts": {\n "foo:updateFooData":"node node_modules/foo/scripts/updateFooData.js"\n }\n}\n\n# and you can run it like this\nnpm run foo:updateFooData\n
Run Code Online (Sandbox Code Playgroud)\n\n我不喜欢这个解决方案,因为它只有在您运行的 npm 脚本是一个文件时才有效。它并不适用于所有情况
\n 归档时间: |
|
查看次数: |
6785 次 |
最近记录: |