官网的Node.js下载了什么
同样, Node.js官网提供了pkg格式的下载器, 通过工具, 可以看到这个下载器具体下载了什么东西:

其中, /usr/local/bin中放了Javascript的解释器node, 而/usr/local/lib/node_modules中有npm包管理器.
后面的postinstall脚本如下:
#!/bin/sh
cd /usr/local/bin || exit 1
ln -sf ../lib/node_modules/npm/bin/npm-cli.js npm
ln -sf ../lib/node_modules/npm/bin/npx-cli.js npx
其中命令行的npm实际上是npm-cli.js脚本, 这个脚本如下:
#!/usr/bin/env node
require('../lib/cli.js')(process)
其实就是用node解释器去运行这个Javascript脚本.
npm下载包的逻辑是什么
使用npm install <包名>时, 会在当前目录的node_modules下下载对应包, 以axios为例, 下载后的目录结构如下:

其中package.json用来记录当前项目下载了哪些包, 在迁移目录之后, 可以直接使用npm install下载全部的包.
如果使用npm install -g, 那么下载的包会到/usr/local/lib/node_modules中, 全部用户都能使用.
在Javascript中使用require('<包名>')时, 会先到项目中搜索是否有node_modules, 如果没有就去全局的node_modules中搜索.
如果要查看Js代码中require的包在哪里, 可以用如下代码:
console.log(require.resolve('包名'))