出现这个错误是因为你使用了yarn的workspace,但并未将工程标记为private。
// 在以下代码中添加private
字段,并设置为true,即可。
{
"name": "test-workspace",
"workspaces": [
"packages/*"
],
+ "private": true,
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}
究其原因,看官网解释:
They have to be marked private: true. This requirement exists because workspaces are a client-only feature. The remote registries (such as the npm registry) have no idea what a workspace is, and neither should they. In order to prevent accidental pushes and information leaks workspaces must have their private flag set.
即,workspace仅仅是为了你的本机方便维护依赖。当你的包被发布到npm的时候,npm完全没有workspace的概念。所以为了避免你手抖发出去。yarn强制你把启用了workspace的工程的标记为私有。