博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Webpack 4.x 配置教程
阅读量:7115 次
发布时间:2019-06-28

本文共 4397 字,大约阅读时间需要 14 分钟。

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

安装 webpack 和 webpack-cli

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

webpack -v复制代码

本地安装完,接下来需要通过 npm 包路径的形式执行 webpack 命令,如下:

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

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

全局安装

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

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

如果你想追求速度,可以通过安装 cnpm 工具,从中国淘宝镜像源进行安装。

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

本地安装

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

或者

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

验证安装

成功安装之后,我们可以验证下是否成功。

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

执行完能够正常打印版本号,说明安装成功。

第一次使用。

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

简单使用

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

mkdir src & touch index.js复制代码

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

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

3、执行全局 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 的相关依赖了,省去了配置时的各种报错信息,大大节约了配置时间,希望能给大家带来帮助~

转载地址:http://qdzel.baihongyu.com/

你可能感兴趣的文章
urses.ascii.ispunct(ch):
查看>>
在OpenStack虚拟机实例中创建swap分区的一种方法
查看>>
Android 解压zip文件(支持中文)
查看>>
jsp post/get中接处理
查看>>
[COM/ATL]组件、对象、MFC、ATL的区别
查看>>
(转)Linux下/etc/rc.local与/etc/init.d的区别与联系
查看>>
linux修改文件权限和用户组管理小结
查看>>
将NavigationBar设置透明
查看>>
加域(Netdom)
查看>>
VB--"." 和 "!" ?
查看>>
Go Revel - Results(响应)
查看>>
关于ActiveMQ的配置
查看>>
c# WinForm 边框阴影窗体
查看>>
组策略--受限制的组
查看>>
PhoneGap CLI 命令行工具
查看>>
SQL Server数据库快照的工作方式
查看>>
解决Android版Firefox字体显示过大的问题
查看>>
[Command] alias - 别名
查看>>
Fedora 10编程开发工具
查看>>
paip..禁用mmseg 的默认词库. . 仅仅使用自定义词库from数据库.
查看>>