webpack之基本概念

255 阅读1分钟

当 webpack 处理应用程序时,它会在内部构建一个 依赖图(dependency graph),此依赖图会映射项目所需的每个模块,并生成一个或多个 bundle

1、入口entry

webpack从入口文件开始找与其直接或间接的依赖来构建依赖图。入口可以有多个

module.exports = {
    entry: {
        app:'./path/index.js'
    }
}

2、输出output

定义webpack创建的bundle输出在什么位置,以什么样的名字输出

const path = require('path');
module.exports = {
    ...
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'first-webpack.bundle.js'
    }
}

3、loader

webpack只能识别js和json文件,loader 用于转换某些类型的模块。

通过(loader)预处理函数,loader 为 JavaScript 生态系统提供了更多能力

const path = require('path');
module.exports = {
    ...
    module: {
        relus: [
            {
                test: /\.(tsx|ts)$/,
                use: 'babel-loader'
            }
        ]
    }
}

4、插件plugin

plugin功能极其强大,可以用来处理各种各样的任务,包括:打包优化,资源管理,注入环境变量等等。

const HtmlWebpackPlugin = require('html-webpack-plugin'); 
const webpack = require('webpack'); // 用于访问内置插件
const path = require('path');

module.exports = {
    ...
    plugins: [
        new HtmlWebpackPlugin({template: './src/template.html'})
    ]
}

在上面的示例中,html-webpack-plugin 为应用程序生成 HTML 一个文件,并自动注入所有生成的 bundle。

webpack plugin是一个具有 apply 方法的 JavaScript 对象。apply 方法会被 webpack compiler 调用,并且 compiler 对象可在整个编译生命周期访问。

5、mode

通过选择 development, production 或 none 之中的一个。