La guía de configuración más detallada para la herramienta de construcción y empaquetado de paquetes web, amigos de front-end, apúrate y clona si quieres, haz clic en estrella.
Esencialmente, webpack es un paquete de módulos estáticos para aplicaciones JavaScript modernas . Cuando webpack procesa la aplicación, construye de forma recursiva un gráfico de dependencia (gráfico de dependencia) , que contiene cada módulo requerido por la aplicación, y luego empaqueta todos estos módulos en uno o más paquetes .
Desde aquí para obtener más información sobre el módulo JavaScript y el módulo webpack.
A partir de webpack v4.0.0, no es necesario introducir un archivo de configuración. Sin embargo, el paquete web sigue siendo altamente configurable . Antes de comenzar, debe comprender cuatro conceptos básicos :
- Entrada
- Producción
- cargador
- Complementos
El propósito de este documento es brindar una descripción general de alto nivel de estos conceptos , al tiempo que proporciona casos de uso relacionados detallados para conceptos específicos.
Dirección de descarga de datos: https://gitee.com/tglx/webpack.git
dirección del documento del paquete web: https://webpack.js.org/concepts/
Documento chino: https://www.webpackjs.com/concepts/
Caso de configuración del entorno de desarrollo:
/*
开发环境配置:能让代码运行
运行项目指令:
webpack 会将打包结果输出出去
npx webpack-dev-server 只会在内存中编译打包,没有输出
*/
const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './src/js/index.js',
output: {
filename: 'js/built.js',
path: resolve(__dirname, 'build')
},
module: {
rules: [
// loader的配置
{
// 处理less资源
test: /\.less$/,
use: ['style-loader', 'css-loader', 'less-loader']
},
{
// 处理css资源
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
// 处理图片资源
test: /\.(jpg|png|gif)$/,
loader: 'url-loader',
options: {
limit: 8 * 1024,
name: '[hash:10].[ext]',
// 关闭es6模块化
esModule: false,
outputPath: 'imgs'
}
},
{
// 处理html中img资源
test: /\.html$/,
loader: 'html-loader'
},
{
// 处理其他资源
exclude: /\.(html|js|css|less|jpg|png|gif)/,
loader: 'file-loader',
options: {
name: '[hash:10].[ext]',
outputPath: 'media'
}
}
]
},
plugins: [
// plugins的配置
new HtmlWebpackPlugin({
template: './src/index.html'
})
],
mode: 'development',
devServer: {
contentBase: resolve(__dirname, 'build'),
compress: true,
port: 3000,
open: true
}
};