首页 > 解决方案 > 带有通配符匹配的 npm pre/post 钩子

问题描述

假设我的 package.json 中有以下脚本

{
  "scripts": {
     "release:public": "....",
     "release:beta": "...."
  }
}

但现在我想添加一个对和prerelease都相同的脚本。是否有可能在两个脚本之前运行一种或另一种方式?release:publicrelease:betaprerelease:*

标签: node.jsnpmnpm-scripts

解决方案


我确实理解您的问题,并且 RobC 的示例是可用的,但不建议命名。当您在脚本命令名中使用 pre 后跟一个同样存在的命令名时。该部分将在(之前)另一个之前运行(https://docs.npmjs.com/cli/v8/using-npm/scripts#npm-run-user-defined

{
 ...
  "scripts": {
    "beforerelease": "....",
    "release:public": "npm run beforerelease && ....",
    "release:beta": "npm run beforerelease &&  ...."
  },
  ...
}

但这是一个均匀的工作量,然后使用这样的预标记功能

    {
 ...
  "scripts": {
    "prerelease:public": "....",
    "release:public": "....",
    "prerelease:beta": "....",
    "release:beta": "...."
  },
  ...
}

就像 Kousha 可能有的那样,我有一个包含许多不同运行脚本的包。我想使用一个在许多其他脚本之前运行的脚本。所以问题仍然存在:是否可以以任何方式在 package.json 中脚本标记的 de 命令部分使用通配符?


推荐阅读