通过SplitChunks,webpackChunkName对代码分割以及mini-css-extract-plugin分离css代码的实践
需环境
开始之前,请各位给自己电脑安装一下Nodejs,具体安装方法这里我就不做讲解了,各位可以移步Node官网查看文档然后对应系统版本进行安装,以下是我的Node or Npm版本
{
"engines": {
"node": "10.16.0",
"npm": "6.9.0"
}
}
目录结构
.
├── dist
├── node_modules
├── public
│ ├── index.html
│ ├── images
├── build
│ ├── webpack.base.config.js
│ ├── webpack.dev.config.js
│ └── webpack.prod.config.js
├── package.json
├── package-lock.json
├── .babelrc
├── postcss.config.js
└── src
├── assets
│ ├── js
│ ├── style
│ ├── images
├── pages
│ ├── app.vue
│ ├── home
│ │ ├── index.vue
│ ├── router
│ │ ├── index.js
└── main.js
这里我说一下几个重要目录,dist目录是webpack打包编译后输出目录,public目录是全局资源,build目录是webpack配置,src目录是我们开发的业务代码存放总目录,请各位按以上结构创建好各目录。
首先,如果你的目录还没有package.json文件,请通过以下方式创建一个文件,请打开你电脑的命令行工具,进入到对应项目目录执行以下命令
npm init -y
执行完成后,你的项目目录内就会生成出一个package.json的配置文件
package.json中的相关依赖
{
"name": "webpack-demo",
"version": "1.0.0",
"description": "",
"scripts": {
"dev": "NODE_ENV=development webpack-dev-server --config ./build/webpack.dev.config.js --watch",
"build": "NODE_ENV=production webpack --config ./build/webpack.prod.config.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"engines": {
"node": "10.16.0",
"npm": "6.9.0"
},
"devDependencies": {
"@babel/core": "^7.5.5",
"@babel/plugin-proposal-object-rest-spread": "^7.5.5",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/plugin-transform-runtime": "^7.5.5",
"@babel/preset-env": "^7.5.5",
"@babel/runtime": "^7.5.5",
"autoprefixer": "^9.6.1",
"babel-loader": "^8.0.6",
"clean-webpack-plugin": "^3.0.0",
"core-js": "^3.1.4",
"css-loader": "^3.1.0",
"file-loader": "^4.1.0",
"html-webpack-plugin": "^3.2.0",
"image-webpack-loader": "^5.0.0",
"mini-css-extract-plugin": "^0.8.0",
"node-sass": "^4.12.0",
"postcss-loader": "^3.0.0",
"purify-css": "^1.2.5",
"purifycss-webpack": "^0.7.0",
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"url-loader": "^2.1.0",
"vue-loader": "^15.7.1",
"vue-style-loader": "^4.1.2",
"vue-template-compiler": "^2.6.10",
"webpack": "^4.38.0",
"webpack-cli": "^3.3.6",
"webpack-dev-server": "^3.7.2",
"webpack-manifest-plugin": "^2.0.4",
"webpack-merge": "^4.2.1"
},
"dependencies": {
"vue": "^2.6.10",
"vue-router": "^3.0.7",
"vuex": "^3.1.1"
},
"postcss": {
"plugins": {
"autoprefixer": {}
}
},
"browserslist": [