How to build a vue component library
2020年1月15日 · Waiting7777 · 1 分鐘閱讀
Example Component
<template>
<div>{{ display }}</div>
</template>
<script>
import moment from 'moment'
export default {
data() {
return {
time: Date.now()
}
},
computed: {
display() {
return moment(this.time).format("HH:mm:ss")
}
},
created() {
setInterval(() => {
this.time = Date.now()
}, 1000)
}
}
</script>
這是一個很簡單的時鐘 component , 裡面會顯示目前的時間。
Webpack
接下來就要設定 webpack
const webpack = require('webpack')
const path = require('path')
module.exports = {
entry: path.resolve(__dirname + '/src/main.js'),
output: {
path: path.resolve(__dirname + '/dist/'),
filename: 'vue-clock.min.js',
libraryTarget: 'umd',
library: 'vue-clock',
umdNamedDefine: true
},
externals: {
moment: 'moment'
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel-loader',
include: __dirname,
exclude: /node_modules/
},
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.css$/,
loader: 'style!less!css'
}
]
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
minimize: true,
sourceMap: false,
mangle: true,
compress: {
warnings: false
}
})
]
}
比較值得注意的部分是,因為原本 component 裡面有用到 moment.js ,但在包自己的 library 時就希望不要包進去。
externals: {
moment: 'moment'
}
Browser and Node.js Bundle
在 webpack 打包時,是可以指定很多種模塊 ex: AMD, common.js, global… ,這次希望一次包成 browser 跟 node 兩邊可以同時使用的 library,所以在設定上是包成比較通用的 umd module,並且在引入點判斷有無 window 變數,有的話就代表是在 browser 環境。
import clock from './Clock.vue'
const Clock = {
install: function(Vue){
Vue.component('Clock', clock)
}
}
export default Clock
export { Clock }
if (typeof window !== 'undefined' && window.Vue) {
window.Vue.use(Clock)
}
Conclusion
這次試著整理如何將寫好的 component 包成 library ,並且讓就算不用node.js webpack 開發的人,單純瀏覽器引入也能輕鬆使用。
Live Demo
Github
Waiting7777
WoW Arena 冠軍轉前端,用電競 meta 思維拆解技術趨勢。
相關文章
AI Agents商業模式+6AI Agent 接管 Web 之後,廣告和電商的商業模式還跑得動嗎?
當 AI Agent 開始代替人類操作 Web,廣告模式、SEO、電商漏斗全部都會被重新洗牌 — 從工程師和產品人的角度看這個轉變,誰是贏家、誰的商業模式最危險。
2026年10月12日 · Waiting7777 · 6 分鐘閱讀
繼續閱讀 →
AI程式碼品質+1AI 改完說 done,畫面真的沒壞嗎?用自架視覺回歸測試驗證 AI coding
AI 改完 code 回報測試全過,但 unit test 不會告訴你畫面有沒有跑版。每個 MR 自動拍改前改後兩張截圖逐像素比對,把差異貼回 MR,附完整 kit 讓公司裡比較弱的 AI 也接得起來。
2026年10月3日 · Waiting7777 · 6 分鐘閱讀
繼續閱讀 →
LLM開源+40.8B、30ms、在家就能跑 自練 decision model
從這個 GitHub 專案出發,聊「在家訓練自己的小模型」這件事的技術門檻現在降到哪裡了,以及 decision model 這個方向對開發者有什麼實際應用價值。
2026年10月2日 · HW SHU · 8 分鐘閱讀
繼續閱讀 →這篇文章對你有幫助嗎?
每週一篇 — 技術趨勢背後的商業邏輯
AI 產業在變什麼、工程師該注意什麼——拆清楚寄到你的信箱。