我尝试在 npm 上发布我的 Angular 库。
但是我收到错误
npm ERR! This package has been marked as private. Remove the 'private' field from the package.json to publish it.
但是我的 package.json 文件中没有任何私有字段
我的库的 package.json 文件如下所示:
{
"name": "@myfirst_mylastname/testlib123",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^11.1.2",
"@angular/core": "^11.1.2"
},
"dependencies": {
"tslib": "^2.0.0"
},
"description": "Test library",
"author": {"name":"test name"},
"keywords": ["test library"],
}
我尝试了什么
我认为私有总是默认的,我添加了 “private”:“false”到我的 package.json 文件,但我在 npmpublish 上遇到相同的错误。
我
googled
,我在他们所说的地方找到了答案 - 在 package.json 文件中使私有字段为 true 或 false。我尝试过但没有成功
这是为什么呢?怎么解决?
如果这对其他人来说是一个问题,那么 NPM 在发布作用域包时抛出的错误会产生误导。
您的
package.json
文件中可能没有“私有”字段,但是作用域包的访问属性默认设置为 restricted
,而普通包默认为 public
(https://docs.npmjs. com/cli/v8/commands/npm-publish#access)。
为了能够发布作用域包,请首先确保您的终端位于包的根目录中 - 发布命令仅影响您所在的目录。 然后在发布时使用标志来设置其访问属性:
npm publish --access=public
您还应该能够使用命令设置包的默认访问值
npm access public @myfirst_mylastname/testlib123
这将允许您在不指定标志的情况下发布。 (https://docs.npmjs.com/cli/v8/commands/npm-access#details)
对我来说,发生这种情况是因为我在错误的存储库上运行命令
就我而言,我想将 private 包发布到 GitHub Packages 而不是 npmjs.com,但错误非常具有误导性。我必须做什么:
.npmrc
文件(如果存在)echo //npm.pkg.github.com/:_authToken=\${PERSONAL_CLASSIC_GITHUB_TOKEN} > .npmrc
(当 PERSONAL_CLASSIC_GITHUB_TOKEN
设置为环境变量并且秘密被明确写入文件 - 请勿错误地使用秘密 提交)npm publish --access restricted
如果您在主机项目根目录(终端通常默认将您置于此处)而不是在库构建到的文件夹中运行
npm publish
,您也可能会收到此错误。
所以不是在这里:
/documents/web-projects/my-host-project/> npm publish
但是这里:
/documents/web-projects/my-host-project/dist/my-library> npm publish
希望这对某人有帮助...