"npm isntall"命令存在

ale*_*cxe 13 javascript package-managers node.js npm

当您键入非法npm命令时,您将收到一条用户友好的错误消息,指出哪些命令合法使用:

$ npm illegal

Usage: npm <command>

where <command> is one of:
    add-user, adduser, apihelp, author, bin, bugs, c, cache,
    completion, config, ddp, dedupe, deprecate, docs, edit,
    explore, faq, find, find-dupes, get, help, help-search,
    home, i, info, init, install, isntall, issues, la, link,
    list, ll, ln, login, ls, outdated, owner, pack, prefix,
    prune, publish, r, rb, rebuild, remove, repo, restart, rm,
    root, run-script, s, se, search, set, show, shrinkwrap,
    star, stars, start, stop, submodule, tag, test, tst, un,
    uninstall, unlink, unpublish, unstar, up, update, v,
    version, view, whoami
Run Code Online (Sandbox Code Playgroud)

你可能会注意到,其中有isntall命令.

这个命令有什么意义?如果这是为了处理错别字,那么为什么不是有特殊的处理intall,insatll等等?此外,uninstall没有相应的unisntall选择.

(使用npm 1.3.22版本).


我问的原因是我对如何处理拼写错误感到有些惊讶和困惑.例如,git比较您输入的命令并建议它可用的最近命令:

$ git stats
git: 'stats' is not a git command. See 'git --help'.

Did you mean this?
    status
Run Code Online (Sandbox Code Playgroud)

此外,pipPython包管理器内置了类似的功能:

$ pip isntall
ERROR: unknown command "isntall" - maybe you meant "install"
Run Code Online (Sandbox Code Playgroud)

仅供参考,在引擎罩,它使用difflib.get_close_matches()的功能.

kum*_*rsh 11

我是Github关联问题的原始"提升者",那些是OSS软件贡献的第一天......我认为这只是一个错字,也许拉动请求可以解决它.但我很幸运能够首先提出一个问题(#2933),以确定他们是否正在寻找这方面的贡献......

事实证明,它解决了围绕这个问题的整个讨论,这很好看.

存在的理由了的isntall命令是因为npm维护人员认为,这样可以节省他们时间-因此,推而广之-其他几个开发商.正如在链接问题中所讨论的那样,这是一个有争议的决定,并且有几个人提出了更有趣的解决拼写错误的方法,例如使用来自有效npm命令的非法命令的levenshtein距离计算(https://www.npmjs. org/package/levenshtein).

无论如何,我认为你是否实现了其中一个算法并为npm项目做出贡献,这对于这个令人敬畏的库来说是一个很好的补充......