我不确定是否有可能。
当npm publish
直接运行时是否可以阻止发布,并使其只能通过脚本访问。
直接执行npm publish
时必须拒绝用户。即用户必须能够通过任何脚本或npm run <script>
有一种方法可以告诉npm仅发布<folder>/
或在发布时查找tarball。
答案 0 :(得分:2)
将包裹标记为private
:
如果您在package.json中将“ private”设置为true,则npm将拒绝 发布它。
这是一种防止私人出版的意外发布的方法 仓库。如果您想确保仅给定的软件包 曾经发布到特定的注册表(例如,内部 注册表),然后使用下面描述的publishConfig字典来 在发布时覆盖注册表配置参数。
{
"name": "some",
"version": "1.0.0",
"private": true
}
如果您要在发布之前强制执行某些操作,请利用prepublish
或prepublishOnly
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
}