webpack4.x配置打包环境

概念

本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。

四个核心概念:

入口(entry)
输出(output)
loader
插件(plugins)

入口(entry)
可以通过在 webpack 配置中配置 entry 属性,来指定一个入口起点(或多个入口起点)。 默认入口文件为 ./src/index.html。

出口(output)
可以通过output 属性配置出口文件,默认出口文件为 ./dist/main.js。

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

loader
webpack 自身只理解 js文件,loader 让 webpack 能够去处理那些非 JavaScript 文件。loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。

在 webpack 的配置中 loader 有两个目标:

test 属性,用于标识出应该被对应的 loader 进行转换的某个或某些文件。
use 属性,表示进行转换时,应该使用哪个 loader。
webpack.config.js

const path = require(‘path’);

module.exports {
module: {
rules: [
{ test: /.txt$/, use: ‘raw-loader’ }
]
}
};

插件(plugins)
loader 被用于转换某些类型的模块,而插件从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。

想要使用一个插件,你只需要 require() 它,然后把它添加到 plugins 数组中。多数插件可以通过选项(option)自定义。你也可以在一个配置文件中因为不同目的而多次使用同一个插件,这时需要通过使用 new 操作符来创建它的一个实例。

webpack.config.js

const HtmlWebpackPlugin = require(‘html-webpack-plugin’); // 通过 npm 安装
const webpack = require(‘webpack’); // 用于访问内置插件

module.exports {
plugins: [
new HtmlWebpackPlugin({template: ‘./src/index.html’})
]
};

模式
通过选择 development 或 production 之中的一个,来设置 mode 参数,你可以启用相应模式下的 webpack 内置的优化

module.exports = {
mode: ‘production’
};

初始化

1、新建文件夹qu-webpack npm init -y 初始化 生成package.json文件
2、新建文件夹src(源代码目录) :包含index.html 和 index.js(默认入口文件)
index.html中引入./index.js

运行webpack打包

3、cnpm i webpack webpack-cli -g 安装webpack
4、新建webpack.config.js,配置打包模式mode (webpack的配置文件,向外暴露配置项,基于node构建,支持node语法和API)
5、webpack打包命令 (生成dist/main.js打包成功 bug:在项目里再装一遍 index.html中需要引入)
index.html中引入 …/dist/index.js

自动实时打包

6、npm i webpack-dev-server -D 自动实时打包(生成的main.js在浏览器内存中,快)
7、在package.json文件中配置script项
8、npm run serve 运行
bug:注意index引入文件为根目录下main.js即…/main.js

托管HTML插件

9、npm i html-webpack-plugin -D (将html文件托管在内存中,无需手动引入main.js文件)
10、在配置文件中配置插件plugins
可以删除index.html中的js文件引入

猜你喜欢

转载自blog.csdn.net/weixin_43848576/article/details/86563699