工具css
步驟html
代碼前端
代碼不貼了,能夠到 create-repo-cli
參考vue
注意:全部構建類相關的都應該安裝到 devDependencies 下,即安裝時加上 --save-devwebpack
這裏就不一一列出全部功能的配置了,只寫一些優化類的配置。想知道全部配置的,能夠直接移步到 webpack-project-template
git
將開發環境、生產環境、ssr的配置分開文件寫,易於維護。將共同的部分抽離出來,再經過 webpack-merge
來merge抽離出來的部分。例:github
const merge = require('webpack-merge')
const base = require('./webpack.base.config')
const dev = {...}
module.exports = merge(base, dev)
複製代碼
將單個文件或整個目錄複製到構建目錄。適合用於拷貝一些靜態資源,如圖片等web
const CopyPlugin = require('copy-webpack-plugin')
new CopyPlugin([
{ from: path.resolve(__dirname, 'public'), to: '../dist/public' }
]),
複製代碼
將CSS提取爲獨立的文件的插件,對每一個包含css的js文件都會建立一個CSS文件,支持按需加載css和sourceMap.vue-cli
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
new MiniCssExtractPlugin({
filename: 'chunk.[name].[contenthash:8].css',
}),
複製代碼
Webpack 進行默認編譯時會有不少無用的信息,須要進行清理,只顯示少許信息,並便於排錯。使用這個插件,能夠幫助清理 console 的信息。也能夠自定義錯誤處理回調等npm
const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin')
new FriendlyErrorsWebpackPlugin(),
複製代碼
進行多線程構建,提升構建速度
const HappyPack = require('happypack')
const os = require('os')
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length })
new HappyPack({
id: 'babel',
loaders: ['cache-loader', 'babel-loader?cacheDirectory'],
threadPool: happyThreadPool,
}),
複製代碼
構建各路程的測速,如loader、plugin消耗的時間,能夠經過看消耗的時間來針對性地進行一些優化...
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin')
const smp = new SpeedMeasurePlugin()
module.exports = smp.wrap(merge(base, dev))
複製代碼
代碼規範是必須的。這裏用 eslint 也支持了檢查 ts 類型,畢竟 tslint 已經中止維護了,且官方也推薦用 eslint 進行約束。業界有好幾個挺標準的規範,如airbnb等。這裏,我是繼承了 eslint-config-airbnb 再進行一些小修改。如過直接使用,這樣就OK了:
//.eslintrc.js
module.exports = {
extends: ['eslint-config-airbnb'],
}
複製代碼
統一規範 commit 格式,讓 commit 信息整整齊齊的展現 安裝 commitlint 、@commitlint/cli、@commitlint/config-conventional
//package.json
"pre-commit": [
"lint"
],
"husky": {
"hooks": {
"commit-msg": "commitlint -e .git/COMMIT_EDITMSG"
}
}
//commitlint.config.js
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'scope-empty': [0],
},
}
複製代碼
rollup 就是適用於作工具庫。其用到的配置,在功能上,其實與 webpack 差很少。具體配置就不詳細說了。想了解的能夠看 rollup-project-template
A cli to create project quickly...
sudo npm install create-repo-cli -g
yarn && yarn start
yarn
yarn start