标记可能没有任何 encodeURIComponent 编码的字符

Tags may not have any characters that encodeURIComponent encodes

我正在从 bower 迁移到 yarn,在我的 bower.json 文件中我有这个依赖项:

Snap.svg": "snap.svg#^0.4.1

当我试图在 yarn 依赖文件中做同样的事情时,我得到了这个错误:

npm ERR! code EINVALIDTAGNAME
npm ERR! Invalid tag name "snap.svg@^0.4.1": Tags may not have any characters that encodeURIComponent encodes.

我该如何解决这个问题?

两件事:

首先,npm 包名称——yarn 使用的包名称是 package.json——是 snapsvg,而 snap.svg(带点)仅用于 Bower。参见snapsvg npm page。您看到的错误与包名称中的那个点有关。

其次,当我用 yarn 1.2.1 测试安装它时,我注意到它抱怨 0.4.1 不可用:

Couldn't find any versions for "snapsvg" that matches "^0.4.1"
? Please choose a version of "snapsvg" from this list: (Use arrow keys)
> 0.5.1
  0.5.0
  0.4.0
  0.3.0
  0.1.0

生成的 package.json 条目应如下所示:

"dependencies": {
  "snapsvg": "^0.4.0"
}

yarn.lock:

snapsvg@^0.4.0:
  version "0.4.0"
  resolved "https://registry.yarnpkg.com/snapsvg/-/snapsvg-0.4.0.tgz#e0767014167825957de7e125c29b0fa89796ea03"
  dependencies:
    eve "~0.4.2"

一般情况下,当发生这种奇怪的事情时,请手动使用 yarn add 和包名,看看它的作用。