考虑到 Node.js 包管理器,即 npm - 我很好奇 publish 命令是否执行 pack 发布之前的命令,或者它是否完全不同?所以如果我要执行:
npm publish <folder>
它是否首先执行以下操作:
npm pack <folder>
我找不到 documentation 中提到的任何内容.
我对此感到好奇的主要原因是我们的构建过程只是在没有明确的
npm pack
之前执行 npm publish
,但包似乎没有预期的内容。 IE。;当我执行本地 npm pack
与 npm publish
的内容时,.tgz
的内容不同。
最佳答案
查看 NPM 源代码,您可以看到它到达了 publishFromDirectory 函数,并调用了 pack 模块。
https://github.com/npm/npm/blob/b80d650def417645d2525863e9f17af57a917b42/lib/publish.js#L79并再次在 https://github.com/npm/npm/blob/b80d650def417645d2525863e9f17af57a917b42/lib/publish.js#L88
如果您进入 pack 模块,您可以看到 _pack
函数执行相同的两个步骤:
https://github.com/npm/npm/blob/114d518c75732c42acbef3acab36ba1d0fd724e2/lib/pack.js#L67
所以,要回答你的问题,它并不完全 pack <folder>
但确实调用了相同的主要代码路径。
那里的代码大多写得很好,而且不难理解,我鼓励您针对此类问题深入研究这些项目的源代码,因为如果您这样做,您对所使用工具的知识将会爆炸式增长。
关于node.js - npm publish 是否执行 npm 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37212121/