NPM install 执行完毕后, 我们可以在 nodemodules 中看到所有依赖的包. 虽然使用者无需关注这个目录里的文件夹结构细节, 只管在业务代码中引用依赖包即可.
node 项目打包时不会把 node_modules 整个进行打包, 而是根据项目中使用的模块进行抽取打包.
对于 node 项目 (比如 webpack 打包的), 不论是依赖, 还是 dev 依赖, 在线上都不用部署这些, 因为遇到 require 和 import 的语句, webpack 会帮您打包模块进去, 线上服务器连 Node.JS 的程序都不用安装, JS 是丢给浏览器解析的.
但是针对一些基于 Node.JS 运行的项目, 比如网站, 游戏服务端程序, 就需要安装 Node.JS, 以及部署依赖了.
Webpack 项目依赖的模块一般都是 dev 依赖, 所以线上不用部署这些模块.
webpack 进行打包:
webpack 只是一个打包模块的机制, 只是把依赖的模块转化成可以代表这些包的静态文件. 并不是什么 commonjs 或者 amd 之类的模块化规范.
webpack 就是识别你的入口文件. 识别你的模块依赖, 来打包你的代码. 至于你的代码使用的是 commonjs 还是 amd 或者 es6 的 import.webpack 都会对其进行分析. 来获取代码的依赖.
webpack 做的就是分析代码. 转换代码, 编译代码, 输出代码. webpack 本身是一个 node 的模块, 所以 webpack.config.JS 是以 commonjs 形式书写的 (node 中的模块化是 commonjs 规范的)
来源: http://www.css88.com/qa/node-js/12270.html