# 初步使用

新建一个文件夹 webpack-demo ,在终端打开这个文件,执行如下命令生成 package.json 文件

npm init -y

安装 webpack

npm install webpack webpack-cli -D

新建如下文件,并将代码复制进去。

webpack-demo/src/content.js

export default function Content() {
  var root = document.getElementById('root');
  var content = document.createElement('div');
  content.innerText = 'content';
  root.appendChild(content);
}

webpack-demo/src/header.js

export default function Header() {
  var root = document.getElementById('root');
  var header = document.createElement('div');
  header.innerText = 'header';
  root.appendChild(header);
}

webpack-demo/src/sidebar.js

export default function Sidebar() {
  var root = document.getElementById('root');
  var sidebar = document.createElement('div');
  sidebar.innerText = 'sidebar';
  root.appendChild(sidebar);
}

webpack-demo/src/index.js

import Header from './header.js';
import Sidebar from './sidebar.js';
import Content from './content.js';

new Header();
new Sidebar();
new Content();

webpack-demo/dist/index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="root"></div>
  <!-- main.js文件是默认打包后的输出文件 -->
  <script src="./main.js"></script>
</body>
</html>

终端执行

npx webpack

然后在浏览器中打开 dist/index.html 文件,浏览器运行结果如下:

以上我们就完成了 webpack 的初次使用,是不是很简单呢😏

# 初步了解 webpack.config.js 配置文件

但是上面的操作有两个小问题:

  • dist 目录中默认输出的打包文件名为 main.js ,如果我们不想用 main 作为默认输出文件名改怎么办呢?
  • 我们仔细看下,终端输出了如下警告:

怎么去掉这个警告呢?

创建 webpack.config.js 文件

const path = require('path');

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    filename: 'index.js',
    path: path.resolve(__dirname, 'dist')
  }
}
  • mode 用于指定 webpack 使用相应模式的内置优化,它有三个值:production、development、none。如果没有设置,webpack 会给 mode 的默认值设置为 production。
选项 描述
development 会将 DefinePlugin 中 process.env.NODE_ENV 的值设置为 development. 为模块和 chunk 启用有效的名。
production 会将 DefinePlugin 中 process.env.NODE_ENV 的值设置为 production。为模块和 chunk 启用确定性的混淆名称,FlagDependencyUsagePlugin,FlagIncludedChunksPlugin,ModuleConcatenationPlugin,NoEmitOnErrorsPlugin 和 TerserPlugin 。
none 不使用任何默认优化选项
  • entry 用于指定 webpack 打包的入口文件
  • output 用于指定 webpack 的输出配置,filename 用于指定打包输出后的文件名
  • path 指定打包后的输出文件名

删除之前 dist 目录下的 main.js 文件,再次在终端运行 npx wepback 命令,发现警告没有了。查看输出 dist 目录,输出了 index.js 文件。