Webpack进入了 4.x 版本,紧跟着对开发者的配置能力有了一些新的要求。今天咱们看一下 Webpack 4.x 下的配置工做该如何进行。javascript
安装 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 ,便可将 src 目录下的 index.js 文件,编译输出到 dist 目录下的 main.js 文件。
node node_modules/webpack/bin/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 。
和webpack 结合的最紧密的当属 babel 了。babel 分为 babel-core
和 babel-loader
两个包。即便分红了两个包,这两个包在版本使用上要注意配套。
请注意:babel-core 7.x 版本的包名是 @babel/core。
采用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
复制代码
采用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
复制代码
配置好转译插件以后,咱们就可使用 ES6 开发 React 项目了,可是咱们仍是须要一些提升开发效率的工具,好比 webpack-dev-server,它可以
咱们看下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。
{
"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 的相关依赖了,省去了配置时的各类报错信息,大大节约了配置时间,但愿能给你们带来帮助~