Webpack 4.x 配置教程

Webpack进入了 4.x 版本,紧跟着对开发者的配置能力有了一些新的要求。今天咱们看一下 Webpack 4.x 下的配置工做该如何进行。javascript

安装 webpack 和 webpack-cli

安装 npm 包,分为全局安装和本地安装。区别是全局安装后,能够经过 webpack 命令直接执行 webpack 程序,以下:css

webpack -v
复制代码

本地安装完,接下来须要经过 npm 包路径的形式执行 webpack 命令,以下:java

node node_modules/webpack/bin/webpack -v
//或者
node_modules/.bin/webpack -v
复制代码

一般状况,咱们通常都会同时进行全局安装和本地安装,至于你选用本地包仍是全局包,就看我的习惯了~总之,只要能找到正确的 webpack 路径,都是可以正常编译的。node

全局安装

4.x 版本,webpack 安装过程被拆分为 webpack 和 webpack-cli 两个包。react

npm install webpack webpack-cli -g
复制代码

若是你想追求速度,能够经过安装 cnpm 工具,从中国淘宝镜像源进行安装。webpack

cnpm install webpack webpack-cli -g
复制代码

本地安装

npm install webpack webpack-cli -D
复制代码

或者web

cnpm install webpack webpack-cli -D
复制代码

验证安装

成功安装以后,咱们能够验证下是否成功。npm

  • 验证全局
webpack -v
复制代码
  • 验证本地
node_modules/.bin/webpack -v
//或者
node node_modules/webpack/bin/webpack -v
复制代码

执行完可以正常打印版本号,说明安装成功。json

第一次使用。

webpack4.x 默认的入口文件是 src目录下的 index.js 文件,默认的出口文件是dist 目录下的 main.js 文件。浏览器

简单使用

一、新建src目录,增长一个 index.js 文件。

mkdir src & touch index.js
复制代码

二、编辑 index.js,随便输入两句代码:

console.log('第一次')。
复制代码

三、执行全局 webpack 命令或者执行本地 webpack 命令。

  • 使用全局下的 webpack 执行编译
webpack
复制代码

一句 webpack ,便可将 src 目录下的 index.js 文件,编译输出到 dist 目录下的 main.js 文件。

  • 使用本地下的 webpack 执行编译
node node_modules/webpack/bin/webpack
复制代码

可见,本地编译须要些的命令比较长,由于须要按照路径查找webpack。

webpack 环境

  • webpack 默认使用的是生产环境编译方式,即当咱们执行 webpack 命令的时候,实际上等价于webpack --mode production,生产环境编译方式会进行压缩混淆操做。
  • 当咱们在开发阶段时,每每须要配置编译方式为开发阶段,可经过以下命令执行:
    webpack --mode development
    复制代码

开发阶段编译后的文件是不会进行压缩混淆操做的,可读性比较好,调试起来也比较方便。

改变入口文件

实际应用中,咱们的默认入口文件可能不是 src 下的 index.js 文件,所幸的是,webpack 支持配置入口文件和出口文件。

配置入口文件。

咱们能够在 webpack 后增长一个参数表明入口文件webpack {入口文件}

webpack ./src/app.js
复制代码

webpack 后的第一个参数表明入口文件,咱们将它改成 ./src/app.js,执行命令会发现,webpack 将该文件编译到了默认的出口文件dist/main.js。

改变出口文件

改变出口文件可使用以下命令实现:webpack {入口文件} -o {出口文件}

webpack ./src/app.js  -o ./bundle/main.js
复制代码

执行命令会发现,输出文件是 bundle 目录下的 main.js 。

配置 babel

和webpack 结合的最紧密的当属 babel 了。babel 分为 babel-corebabel-loader 两个包。即便分红了两个包,这两个包在版本使用上要注意配套。

请注意:babel-core 7.x 版本的包名是 @babel/core。

babel-loader 7.x 和 babel-core 6.x。

采用babel-loader 7.x 时,须要安装 babel-preset-env 和 babel-preset-react插件,进行 ES6 和 React 的转译工做。

cnpm install babel-loader babel-core babel-preset-env babel-preset-react -D
复制代码
  • .babelrc 中配置
    • env
    • react

babel-loader 8.x 和 @babel/core 7.x。

采用babel-loader 8.x 时,须要安装 @babel/preset-env 和 @babel/preset-react插件,进行 ES6 和 React 的转译工做。

cnpm install babel-loader @babel/core @babel/perset-env @babel/preset-react -D
复制代码
  • .babelrc 中 配置
    • @babel/preset-env
    • @babel/preset-react 配置好后就能够很happy地使用 webpack4.x 进行开发了。

webpack-dev-server

配置好转译插件以后,咱们就可使用 ES6 开发 React 项目了,可是咱们仍是须要一些提升开发效率的工具,好比 webpack-dev-server,它可以

  • 在本地开启一个静态服务器,使得咱们能够经过域名(localhost 或者127.0.0.1或者本身配置的 host 域名)的方式访问本地开发目录的页面和静态资源。
  • 让咱们在保存文件的同时自动编译。
  • 无刷新更新浏览器中的模块。

咱们看下webpack-dev-server 如何配置

module.exports = {
    devServer: {
        contentBase: path.join(__dirname, "/dist")
  }
}
复制代码

上例咱们只配置了一个属性 contentBase,它表明了webpack-dev-server开启的静态服务器的根目录,webpack-dev-server启动一个服务器以后,默认端口是8080,当咱们访问 localhost:8080 时,webpack-dev-server 会去 dist 目录寻找静态资源文件。

webpack-dev-server还有一些其余配置,好比热更新。

node_modules/.bin/webpack-dev-server --hot
复制代码

固然 webpack-dev-server 还有不少特别棒的配置,这里就不一一细说了,你们能够去网上参考一些资料进行配置,若是有什么不太懂的,能够留言咨询~~

完整的 package.json

如下是一个完整的 package.json。

{
  "name": "webpack-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "node_modules/.bin/webpack-dev-server --hot"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.4.5",
    "@babel/preset-env": "^7.4.5",
    "@babel/preset-react": "^7.0.0",
    "babel-loader": "^8.0.6",
    "css-loader": "^2.1.1",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "style-loader": "^0.23.1",
    "webpack": "^4.32.2",
    "webpack-cli": "^3.3.2",
    "webpack-dev-server": "^3.5.1"
  }
}

复制代码

完整的 .babelrc

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react"
  ]
}
复制代码

完整的 webpack-config.json 文件

var path = require('path');
module.exports = {
  output: {},
  module: {
    rules: [
      {
        test: /(\.jsx|\.js)$/,
        exclude: '/node_modules',
        use: { loader: "babel-loader" }
      },
      {
        test: /\.css$/,
        exclude: '/node_modules',
        use: [{
          loader: 'style-loader'
        }, { loader: "css-loader" }]
      }
    ]
  },
  devServer: {
    contentBase: path.join(__dirname, "/dist")
  }

}
复制代码

你们拷贝这三个配置文件以后,执行 npm install 便可安装 webpack 4.x 的相关依赖了,省去了配置时的各类报错信息,大大节约了配置时间,但愿能给你们带来帮助~

相关文章
相关标签/搜索