Node.js 如何在全局级别运行npm脚本,在所有节点项目上强制执行

Node.js 如何在全局级别运行npm脚本,在所有节点项目上强制执行,node.js,npm,npm-scripts,npm-publish,Node.js,Npm,Npm Scripts,Npm Publish,我有一个场景,在npm发布之前我必须运行一个验证脚本,并且我必须在全局级别强制执行它,以便所有节点应用程序在开始发布之前运行这个验证脚本 就像PrePublish一样,它只在linux代理上的全局级别应用,我们的所有节点应用程序都在该代理上运行。在验证脚本中,需要获取应用程序名称和版本 你能建议我创建一个原因吗?如果你需要任何东西,请告诉我们,我们将进一步帮助你 克隆回购协议: git clone https://github.com/lifeeric/validate-node-package

我有一个场景,在npm发布之前我必须运行一个验证脚本,并且我必须在全局级别强制执行它,以便所有节点应用程序在开始发布之前运行这个验证脚本

就像PrePublish一样,它只在linux代理上的全局级别应用,我们的所有节点应用程序都在该代理上运行。在验证脚本中,需要获取应用程序名称和版本

你能建议我创建一个原因吗?如果你需要任何东西,请告诉我们,我们将进一步帮助你

克隆回购协议:

git clone https://github.com/lifeeric/validate-node-package
并创建权限

# change dir
cd validate-node-package

# Permission
chmod +x npmv
并使其全球化

sudo cp npmv /bin

@用户3142041我很高兴它帮助了你!请将问题标记为已回答,并在我的Github repo上加上一颗星:@user3142041我希望很快我会用更多功能更新repo,您也可以进行PR,或为功能添加问题!对于跨平台,只需运行:node-p require'./package.json'.name和/或node-p require'./package.json'。version@RobC谢谢你的喜爱,我真的很喜欢@嗜血-你的grep模式可能会返回意想不到的结果。例如,假设我们在package.json中定义了依赖项。您将记录类似以下版本的内容:1.0.0,标准版本:^8.0.2。名字也会出现类似的问题。你到底想要什么有些不清楚。但是,如果您希望在运行npm publish时运行特定的prepublishOnly脚本,即使每个projects package.json中都没有定义prepublishOnly脚本,那么您需要在shell级别重写npm publish命令。我的回答描述了如何对伪postinstall脚本执行此操作-修改此脚本以运行伪预发布脚本将相当容易。@RobC..我必须验证发布注册表url是否与“repository/npm dev”匹配,然后仅运行预发布脚本,该脚本将基于响应代码进行RestAPI调用,如果为200,则继续执行发布和后发布脚本,否则退出执行,中止发布。bashrc在全球范围内工作,我们能否做到这一点?因为我们是核心团队,您必须在全球范围内实施它,因为很难监控每个应用程序是否都会进行更改?请建议这里有一个示例要点。如果添加到.bashrc文件并创建新会话使其生效,即创建新的终端窗口。无论将来何时为任何项目运行npm publish命令,它都将:1运行npm config get registry命令2验证实际注册表是否等于预期注册表。3如果实际注册表不等于预期的注册表url,则会显示错误并中止发布。4当实际注册表与预期注册表相等时,pkg将发布。谢谢@RobC,我仍在努力寻找最佳方法,您的脚本非常有用。如果我被卡住了,我会在这里发表评论。@RobC..我已将脚本放在/bin下,并修改package.json以执行预发布脚本和后发布脚本。谢谢你的建议。