2014-11-18 6 views
10

Wenn Sie einen unzulässigen npm Befehl eingeben, die Sie besagt, eine benutzerfreundliche Fehlermeldung zu erhalten, die zu verwenden sind rechtliche Befehle:„npm isntall“ Befehl existiert

$ 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 

Wie Sie feststellen können, es ist unter anderem isntall Befehl.

Was ist der Sinn dieses Befehls? Wenn dies erstellt wurde, um Tippfehler zu behandeln, warum hat es dann keine spezielle Behandlung für intall, insatll usw.? Außerdem hat uninstall keine entsprechende unisntall Option.

(mit npm 1.3.22 Version).

Der Grund, warum ich frage, ist, dass ich ein bisschen überrascht und verwirrt bin, wie der Tippfehler behandelt wird. Zum Beispiel vergleicht git Sie den Befehl eingegeben hat, und schlägt vor, die am nächsten Befehl sie zur Verfügung steht:

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

Did you mean this? 
    status 

Auch pip Python package manager hat eine ähnliche Funktionalität eingebaut:

$ pip isntall 
ERROR: unknown command "isntall" - maybe you meant "install" 

FYI, under-the-hood es verwendet difflib.get_close_matches() Funktion.

+6

Es ist daran zu erinnern, dass Sie npm isntall dass

Jedenfalls nehme ich an. – hobbs

+2

OP, du solltest deine Fragen googlen. Dies war mein erstes Ergebnis für das Keyword "isntall" von der github-Seite von npm. https://github.com/npm/npm/issues/2933 –

+3

Fun Tatsache: die neueste Version von NPM akzeptiert noch 'Isntall' als Alias, aber es zeigt es nicht mehr auf dieser Liste, um Menschen nicht zu verwirren.Persönlich denke ich, dass ein solcher Alias ​​einfach nur albern ist, aber nach der Github-Frage zu urteilen, wollen sie kein Feedback mehr dazu. –

Antwort

10

Ich war der ursprüngliche "Raiser" des verbundenen Problems auf Github, und das waren die ersten Tage der Beitrag zu OSS-Software ... Ich dachte, es war nur ein Tippfehler, und vielleicht eine Pull-Anfrage würde es lösen. Aber ich war zum ersten mit einigen guten Sinn gesegnet raise an issue (#2933), um herauszufinden, ob sie an dieser Front für den Beitrag gesucht ...

Wie sich herausstellte, ist es entwirrt eine ganze Diskussion um die Frage, was gut war sehen.

Die Daseinsberechtigung des isntall Befehl ist, weil die npm Maintainer glauben, dass es ihnen Zeit — und somit durch die Erweiterung — mehrere andere Entwickler spart. Wie in der verlinkten Ausgabe diskutiert, war dies eine strittige Entscheidung, und mehrere Leute haben interessantere Methoden vorgeschlagen, um Tippfehler zu lösen, wie zum Beispiel die Berechnung der Levenshtein-Distanz des ungültigen Befehls aus gültigen npm-Befehlen (https://www.npmjs.org/package/levenshtein). wenn Sie implementieren eine jener algos und tragen zur npm Projekt, wäre es eine schöne Ergänzung zu diesem fantastischen Bibliothek sein ...

1

Da gibt es keine Möglichkeit, jeden möglichen Tippfehler zu behandeln, ohne andere Sachen zu brechen. Init könnte möglicherweise ein Tippfehler bei der Installation sein.

Könnte levenshtein Entfernung von Ihrer Eingabe oder etwas tun, aber unnötige Komplexität führt.

+0

'isntall' ist eigentlich hardcoded. Es ist so ein häufiger Fehler, dass es Teil von npm wurde. Es wird nicht aufgrund eines kleinen Fehlers berechnet – Pawel

Verwandte Themen