寫於 2017.05.04
相信不少使用Vue的開發者和公司都有定製一套屬於自己的UI元件庫的需求。但是要開發、測試、打包、釋出這個元件庫,卻需要耗費較大的勞動力去搭建一整套的環境。針對這個問題,我搭建了一個專門用來構建Vue的UI元件庫的開發框架,以節省搭建環境的勞動力,專心於元件庫的開發。
一、介紹
Vue-Donut
是一個開發框架,配合vue-cli
使用。所以首先保證全域性安裝有vue-cli
。接下來就可以初始化我們的專案了:
vue init jrainlau/vue-donut <專案名>
複製程式碼
類似官方的vuejs-templates/webpack模板,Vue-Donut
也允許使用者進行一些配置。在配置完成後則會生成你的元件庫目錄。值得注意的是,這個元件庫最終釋出的名字也是你所自定義的專案名(當然這些都是可以修改的)。
接下來按照提示,進入專案目錄後,通過yarn
命令下載所需依賴包即可開始使用。
目錄結構如下:
.
├── index.html
├── package.json
├── src
│ ├── app.vue
│ ├── assets
│ │ └── donut.jpg
│ ├── components
│ │ ├── content.vue
│ │ ├── header.vue
│ │ ├── index.js
│ │ ├── link.vue
│ │ └── title.vue
│ └── main.js
└── webapck
├── build.js
├── dev.js
├── doc.js
├── webpack.base.config.js
├── webpack.build.config.js
├── webpack.dev.config.js
└── webpack.doc.config.js
複製程式碼
二、命令
-
yarn run dev
:開發模式- 通過
webpack-dev-server
開啟一個測試伺服器,就和官方的vuejs-templates/webpack模板裡面的一樣。
- 通過
-
yarn run build
:打包及釋出模式- 這個命令會以
src/components/index.js
為入口檔案,通過webpack
構建後產出到dist
目錄。 dist/index.js
就是你接下來將會發布到npm
上面的包。- 你應該熟練掌握如何編寫vue的外掛
src/components/index.js
入口檔案應該長成下面這個樣子:import myComponent from './my-component.vue' const install = (Vue) => { Vue.component('my-componen', myComponent) } export default install 複製程式碼
- 這個命令會以
-
yarn run build
:文件模式- 通過執行
yarn run dev
,你所開發的就像是一個普通的單頁應用,這也類似於元件庫的官方文件頁面。當開發完成後,你可以通過這條命令打包你的應用。app.[hash].js
,vendor.[hash].js
和manifest.[hash].js
,以及獨立的css
檔案都會被打包到docs
資料夾。 - source map
*.[hash].map
會被自動生成。 - 可以方便地直接使用
docs
目錄作為github pages
的資源目錄。
- 通過執行
三、注意事項
Vue-Donut
預設使用less
作為前處理器,如果需要用其他前處理器,可以自定義配置。
測試同理。
四、證書
MIT
一些碎碎念
在工作的過程中,遇到了搭建UI元件庫的需求。開發不難,麻煩的是如何在專案中引入使用。首先我們嘗試了使用git的submodule
方案,就是把UI元件庫直接作為專案的子模組使用。另外一種方式,是把整個元件庫釋出到npm,然後在webpack.module.rules
的exclude
裡面通過正則或者函式的方式,使用專案的webpack配置去跑元件庫的程式碼。這兩種方式都不那麼優雅,思考再三,最後決定搭個更加方便優雅的開發框架來。
在此之前,對於webpack的使用及配置僅處於“看得懂”的程度,但從未真正從頭開始搭過。在搭建的過程中也遇到了不少坑,但通過查閱官方文件大都能獲得解決辦法,實在不行還有萬能的google和stackoverflow。搭的過程中也參考了很多優秀的實踐,比如公司前輩的搭建方式,以及vue-cli官方出品的搭建方式等,搭完後對webpack的掌握也得到了極大的提升。
希望這個作品能夠發揮能效,也歡迎提出問題和建議和我交流~