webpack 是一个模块打包器,它的主要目标是将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使用,但它也能够胜任转换、打包或包裹任何资源。
在前端开发中,webpack 可以将多种类型的文件视为模块进行处理,如 HTML、JS、CSS、图片等。它根据模块之间的依赖关系将所有模块打包起来,例如可以从一个入口文件开始,分析其依赖关系,把 ES6 语法转换成浏览器认识的 ES5 语法,处理模块之间的依赖关系,并且会帮助我们处理模块之间的依赖关系,还可以在打包的过程中,把 less、es6、typescript 等转换成浏览器可以识别的 css、es5、JavaScript 等操作。
webpack 有许多特点和优势。它对 CommonJS、AMD、ES6 的语法做了兼容,对 js、css、图片等资源文件都支持打包,适合团队化开发。它有独立的配置文件 webpack.config.js,可以将代码切割成不同的 chunk,实现按需加载,降低了初始化时间。具有强大的 Plugin(插件)接口,大多是内部插件,使用起来比较灵活。插件目的在于解决 loader 无法实现的其他事,是 webpack 的支柱功能,Webpack 自身也是构建于在 webpack 配置中用到的相同的插件系统之上。