2016-05-13 13 views
8

In Anbetracht den Node.js Paket-Managers, nämlich npm - ich neugierig war, wenn die veröffentlicht Befehl den vorherigen Pack Befehl führt zum veröffentlichen oder wenn es tut etwas anderes insgesamt? Also, wenn ich auszuführen waren:Hat veröffentlichen npm ein npm Pack ausführen

npm publish <folder> 

Macht es die folgende erste ausführen:

npm pack <folder> 

Ich konnte nicht alles in der documentation erwähnt zu finden. Der Hauptgrund, ich bin neugierig auf das ist, dass unser Build-Prozess einfach die npm publish ohne die explizite npm pack vor, aber das Paket scheint nicht den erwarteten Inhalt zu haben. d. h. der Inhalt der .tgz unterscheidet sich, wenn ich einen lokalen npm pack zu dem Inhalt der npm publish führe.

+0

Welche Art von Unterschied haben Sie? – yrtimiD

Antwort

1

Wenn Sie sich die NPM-Quelle ansehen, können Sie sehen, dass sie in der publishFromDirectory-Funktion ankommt und in das Pack-Modul aufruft.

https://github.com/npm/npm/blob/b80d650def417645d2525863e9f17af57a917b42/lib/publish.js#L79 und wieder bei https://github.com/npm/npm/blob/b80d650def417645d2525863e9f17af57a917b42/lib/publish.js#L88

Wenn Sie durch in das Pack-Modul folgen, können Sie sehen, dass die _pack Funktion die gleichen zwei Schritte ausführt:

https://github.com/npm/npm/blob/114d518c75732c42acbef3acab36ba1d0fd724e2/lib/pack.js#L67

So zu beantworten Ihre Frage, es tut nicht genau pack <folder>, aber ruft in die gleichen wichtigen Code-Pfade.

Der Code dort ist meist gut geschrieben und nicht schwer zu folgen, ich würde Sie ermutigen, in den Quellcode dieser Projekte für diese Art von Frage zu graben, da Ihr Wissen über die Werkzeuge, die Sie verwenden, explodiert, wenn Sie tun.

Verwandte Themen