直接运行时阻止“ npm publish”

时间:2018-07-23 18:11:42

标签: node.js npm npm-publish

我不确定是否有可能。

npm publish直接运行时是否可以阻止发布,并使其只能通过脚本访问。

直接执行npm publish时必须拒绝用户。即用户必须能够通过任何脚本或npm run <script>

发布

有一种方法可以告诉npm仅发布<folder>/或在发布时查找tarball。

3 个答案:

答案 0 :(得分:2)

将包裹标记为private

  

如果您在package.json中将“ private”设置为true,则npm将拒绝   发布它。

     

这是一种防止私人出版的意外发布的方法   仓库。如果您想确保仅给定的软件包   曾经发布到特定的注册表(例如,内部   注册表),然后使用下面描述的publishConfig字典来   在发布时覆盖注册表配置参数。

{
  "name": "some",
  "version": "1.0.0",
  "private": true
}

如果您要在发布之前强制执行某些操作,请利用prepublishprepublishOnly npm-script

答案 1 :(得分:1)

是的,我们可以通过在package.json中将private设置为true来限制npm以防止意外发布

您也可以使用脚本进行发布 在您的package.json

{
     "scripts": {
          "publish:mypackages": "npm publish folder1/file1.tgz --registry http://custom-registry..."
     }
}

现在在cmd中:npm运行publish:mypackages

它将给定的tarball发布到您提供的注册表中。

答案 2 :(得分:1)

如果我将其标记为私人,那么我将根本无法发布。我的主要目的是防止意外出版。

NPM团队提供了一个非常简单的解决方法。

package.json

{
  "prepublishOnly": "node prepublish.js",
  "release": "RELEASE_MODE=true npm publish"
}

prepublish.js

const RELEASE_MODE = !!(process.env.RELEASE_MODE)

if (!RELEASE_MODE) {
    console.log('Run `npm run release` to publish the package')
    process.exit(1) //which terminates the publish process
}