webpack有四个核心概念:css
const HtmlWebpackPlugin = require('html-webpack-plugin'); //经过 npm 安装 const webpack = require('webpack'); //访问内置的插件 const path = require('path'); const config = { entry: './path/to/my/entry/file.js', output: { filename: 'my-first-webpack.bundle.js', path: path.resolve(__dirname, 'dist') }, module: { rules: [ { test: /.(js|jsx)$/, use: 'babel-loader' } ] }, plugins: [ new webpack.optimize.UglifyJsPlugin(), new HtmlWebpackPlugin({template: './src/index.html'}) ] }; module.exports = config;
对比 Node.js 模块,webpack _模块_可以以各类方式表达它们的依赖关系,几个例子以下:html
import
语句require()
语句define
和 require
语句@import
语句。url(...)
)或 HTML 文件(<img src=...>
)中的图片连接(image url)模块热替换(HMR - Hot Module Replacement)功能会在应用程序运行过程当中替换、添加或删除模块,而无需从新加载整个页面。主要是经过如下几种方式,来显著加快开发速度:node
除了普通资源,编译器(compiler)须要发出 "update",以容许更新以前的版本到新的版本。"update" 由两部分组成:webpack
NaN. 更新后的 manifest(JSON)
NaN. 一个或多个更新后的 chunk (JavaScript)git
manifest 包括新的编译 hash 和全部的待更新 chunk 目录。每一个更新 chunk 都含有对应于此 chunk 的所有更新模块(或一个 flag 用于代表此模块要被移除)的代码。github
编译器确保模块 ID 和 chunk ID 在这些构建之间保持一致。一般将这些 ID 存储在内存中(例如,使用 webpack-dev-server 时),可是也可能将它们存储在一个 JSON 文件中。web