有興趣能夠去極客時間《玩轉 webpack 課程》css
- 單入口:entry 是一個字符串
```
module.exports = {
entry: './path/to/my/entry/file.js'
}
```
- 多入口: entry 是一個對象
```
module.exports = {
entry: {
app: './src/index.js',
home: './src/home'
}
}
```
複製代碼
```
module.exports = {
entry: './path/to/my/entry/file.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'my-first-webpack.bundle.js'
}
}
```
複製代碼
```
module.exports = {
entry: {
app: './src/index.js',
home: './src/home'
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js' // 經過佔位符確保文件名稱不一致
}
}
```
複製代碼
webpack 自己只支持 js 和 json 兩種文件類型,經過 loaders 能夠去支持其餘文件類型而且將他們轉換成有效的模塊,還能添加到依賴模圖中。
經常使用loaders 後面構建會用到html
名稱 | 描述 |
---|---|
babel-loader | 轉換 es六、es7等新特性寫法 |
file-loader | 進行圖片文字等打包 |
css-loader | 支持.css文件類型加載和解析 |
less-loader | less轉換成 css |
ts-loader | ts轉換成js |
經常使用的 pluginsnode
名稱 | 描述 |
---|---|
clean-webpack-plugin | 清理構建目錄 |
html-webpack-plugin | 建立html 文件去承載bound文件 |
friendly-errors-webpack-plugin | 友好的錯誤提示 |
uglifyjs-webpack-plugin | 壓縮 js |
zip-webpack-plugin | 打包文件壓縮成 zip |
commons-chunk-plugin | 將相同模塊提成公共js |
環境 | 描述 |
---|---|
development | 設置 process.env.NODE_ENV 爲development ,開啓 NamedChunkplugin 和 namedModulesPlugin 代碼熱更新時很適用 |
production | webpack 會去開啓默認壓縮等 |
none | 不開啓任何優化選項 |
設計腦圖以下: react
rick-webpack
├─.eslintrc
├─.gitignore
|─.travis.yml
├─CHANGELOG.md
├─README.md
├─package.json
├─test // 測試文件
├─lib //放置配置代碼
| ├─webpack.base.js
| ├─webpack.dev.js
| └webpack.prod.js
複製代碼
npm i eslint babel-eslint eslint-config-airbnb-base -D
複製代碼
新增一個 .eslintrc
文件webpack
{
"root": true,
"env": {
"node": true
},
"parser": "babel-eslint",
"extends": ["airbnb-base"],
"rules": {
"indent": ["error", 4]
}
}
複製代碼
冒煙測試能夠保證咱們的框架是否可用,可是細節部分就須要咱們用單元測試git
核心思想: 代碼集成到主幹以前,必須經過自動化測試,只要有一個用例失敗,就不能集成到主幹。es6
github目前流行 CI ,travis CI 佔比很明顯 github
接入方式很簡單,只須要簡單三步web
language: node_js
sudo: false
cache:
apt: true
directories:
- node_modules
node_js: stable #設置相應的版本
install:
- npm install -D #安裝 builder 依賴
script:
- npm test
複製代碼
後續在迭代過程很重要 良好的 git commit有如下優點npm