node_modules可以直接复制吗?
npm install 执行完毕后,我们可以在 nodemodules 中看到所有依赖的包。我们是否可以直接通过复制node_modules文件夹来实现依赖包的移动呢?

简单的讲,是可以直接复制node_modules的。但是每个人电脑环境的不同,node_module安装的顺序也不同,可能会出问题不同的问题。
虽然说依赖树的结构并不影响您的工程,但为安全起见,如果遇到问题时,请直接在工程目录下面npm install,假设工程下有package.json文件。那么你将得到跟来源机器完全一样的依赖库。
扩展:
从node_modules加载模块:
如果传递给 require() 的模块标识符不是一个核心模块,也没有以 '/' 、 '../' 或 './' 开头,则 Node.js 会从当前模块的父目录开始,尝试从它的 /node_modules 目录里加载模块。 Node.js 不会附加 node_modules 到一个已经以 node_modules 结尾的路径上。
如果还是没有找到,则移动到再上一层父目录,直到文件系统的根目录。
例子,如果在 '/home/ry/projects/foo.js' 文件里调用了 require('bar.js'),则 Node.js 会按以下顺序查找:
/home/ry/projects/node_modules/bar.js
/home/ry/node_modules/bar.js
/home/node_modules/bar.js
/node_modules/bar.js
这使得程序本地化它们的依赖,避免它们产生冲突。
通过在模块名后包含一个路径后缀,可以请求特定的文件或分布式的子模块。 例如, require('example-module/path/to/file') 会把 path/to/file 解析成相对于 example-module 的位置。 后缀路径同样遵循模块的解析语法。