13

考虑到Node.js包管理器,即npm - 我很好奇发布命令是在发布之前执行打包命令,还是完全不同?所以如果我要执行:

npm publish <folder>

它是否首先执行以下操作:

npm pack <folder>

我找不到文档中提到的任何内容。


我对此感到好奇的主要原因是我们的构建过程只是在npm publish没有明确的npm pack先验的情况下进行,但包似乎没有预期的内容。IE; 当.tgznpm packnpm publish.

4

1 回答 1

4

查看 NPM 源代码,您可以看到它到达了 publishFromDirectory 函数,并调用了 pack 模块。

https://github.com/npm/npm/blob/b80d650def417645d2525863e9f17af57a917b42/lib/publish.js#L79并再次在 https://github.com/npm/npm/blob/b80d650def417645d2525863e9f17af57a917b42/lib/publish.js#L79

如果您继续进入 pack 模块,您可以看到该_pack函数执行相同的 2 个步骤:

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

因此,要回答您的问题,它并不完全正确pack <folder>,但确实调用了相同的主要代码路径。

那里的代码大部分都写得很好并且不难理解,我鼓励您针对此类问题深入研究这些项目的源代码,因为如果您这样做,您对所使用工具的知识将会爆炸。

于 2017-12-22T09:00:50.913 回答