webpack-init-project
Version:
learning webpack completely
108 lines (78 loc) • 3.34 kB
Markdown
# webpack-init-project
## Introduction
一个以webpack4为基础的现代工程模版,打造简单易用的webpack环境项目
主要有以下特点:
1. 支持ES6 jsx 语法 (doing)
2. 支持vue 语法 (doing)
3. 可以根据场景需要裁剪或者扩展 (done)
-----
主要包括:
1. base部分
> 配置内容详细见webpack.common.js。更多关于:生成css单独文件、CSS Module、css sourceMap等内容可以翻看具体的loader链接
+ 入口文件:
- App : index.js
- Common : common.js
+ js文件
- [bable-loader](https://github.com/babel/babel-loader)
- [.babelrc](https://www.babeljs.cn/docs/usage/babelrc/)
+ css文件:默认采用打包输出,没有生成单独的文件;支持less和scss;开启Css Module(规则:[local]-[hash:base64:5])
- [style-loader](https://github.com/webpack-contrib/style-loader) : js -> tag style
- [css-loader](https://github.com/webpack-contrib/css-loader) : css -> css in js
- [less-loader](https://github.com/webpack-contrib/less-loader) : less -> css
- [sass-loader](https://github.com/webpack-contrib/sass-loader) : sass -> css
- [postcss-loader](https://github.com/postcss/postcss) : Autoprefixer
- [MiniCssExtractPlugin](https://github.com/webpack-contrib/mini-css-extract-plugin) :js -> file style
+ 图片/字体:
- 默认开启[file-loader](https://github.com/webpack-contrib/file-loader) : file module -> url
- xml tsv等: 默认未开启处理
2. 开发环境配置部分
> 配置内容详细见webpack.dev.js
- mode:'development':webpack4.X 指明环境
- [webpack-hot-middleware](https://github.com/webpack-contrib/webpack-hot-middleware)
- [CleanWebpackPlugin]()
- [HtmlWebpackPlugin]()
- [NamedModulesPlugin]()
- [HotModuleReplacementPlugin]()
3. 生产环境配置部分
> 配置内容详细见webpack.prod.js
- mode:'production'
+ optimization
- [splitChunks](https://webpack.js.org/plugins/split-chunks-plugin/)
4. server 部分
- 使用[express][1]创建http服务
- 使用[webpack-dev-middleware][2],文件变更时实时编译
- 所有路由重定向到入口文件,使用前端路由导航
## Before use
- 因为默认使用了CSS Module,[CSS Module 详细参考](https://github.com/camsong/blog/issues/5)
```css
.normal {
color: green;
}
```
```javascript
// without css module:
import './Button.css';
buttonElem.outerHTML = `<button class=${normal}>Submit</button>`
```
```javascript
// with css module
import styles from './Button.css';
buttonElem.outerHTML = `<button class=${styles.normal}>Submit</button>`
```
## Install
npm install
## build
npm run build
## start
npm start
## TODOLIST
开发一个脚手架,让用户自己选择框架安装,是webpack环境配置更加具有针对性
1. react
- [create-react-app](https://github.com/webpack-contrib/webpack-hot-middleware)
2. vue
- [vue-cli](https://github.com/vuejs/vue-cli)
3. none: 默认不引入框架的配置环境
[1]:https://expressjs.com/
[2]:https://github.com/webpack/webpack-dev-middleware
## Design Summary
- webpack-hot-middle 要想起作用,还要在每一个要监听的入口文件加入`webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000&reload=true`