最近在工做中寫了一個面向 PC 端的 Vue 滾動組件,關於 PC 端的滾動組件之前也用過一些,可是沒有找到特別滿意的,因此本身想着把這個組件開源發佈出去,但願可以幫到和我有相似需求的人吧!html
目標vue
首先咱們須要 vue-cli 來爲咱們生成一個項目的初始模板。webpack
npm install -g @vue/cli # OR yarn global add @vue/cli
vue init webpack-simple <project-name>
cd project-name npm init git init
npm init 和 git init的過程就略過了git
接下來在src/
目錄下建立一個 components 目錄,隨後在 components 目錄下創建你的組件,好比scrollbars.vue
github
繼續在src/
下建立index.js
這個 js 將會在 build 模式下做爲入口 js 進行打包,若是你要導出多個組件也是能夠的,只要導出一個對象便可web
import Scrollbars from './components/scrollbars.vue' Scrollbars.install = Vue => Vue.component(Scrollbars.name, Scrollbars) export default Scrollbars
爲了方便咱們的開發,須要配置一下 webpack 的打包配置。vue-cli
首先在 package.json 裏增長一條腳本 dmeo 該命令的做用是一鍵打包出一個用於 demo 頁面的主 js 文件npm
"demo": "cross-env NODE_ENV=demo webpack --progress --hide-modules"
接下來就是比較核心的 webpack 配置json
const NODE_ENV = process.env.NODE_ENV // 爲了方便在不一樣模式下的路徑配置,咱們配置三個map對象來匹配具體的模式,減小複雜的判斷 // 三種基本模式 // 1 build - production 用於打包核心組件代碼 別人引入的就是這個文件 // 2 dev - development 開發模式 調試你的組件 // 3 demo - 打包demo資源 打出來的js是包含完整的vue源碼的 const enteyMap = { production: './src/index.js', development: './src/main.js', demo: './src/main.js' } const pathMap = { production: './dist', development: './demo', demo: './demo' } const publicMap = { production: '/dist/', development: '/demo/', demo: '/demo/' } module.exports = { entry: enteyMap[NODE_ENV], // 引入路徑 build模式下直接引入組件自身 output: { path: path.resolve(__dirname, pathMap[NODE_ENV]), // 輸出路徑 publicPath: publicMap[NODE_ENV], // 資源引入路徑 爲了方便咱們的demo打包 開發模式和demo模式相同 filename: 'vue-scrollbars.js', // 你的組件名稱 library: 'vue-scrollbars', // 填寫組件名稱便可 人家能夠經過這個名稱來引入 libraryTarget: 'umd', umdNamedDefine: true } }
因爲咱們修改了 publicPath 咱們須要修改一下index.html
的 js 路徑app
<script src="./demo/vue-scrollbars.js"></script>
npm run dev
開始開發吧,盡情的在app.vue中引入你的組件並進行調試開發
npm run demo
打包完成後你能夠嘗試在工程根目錄運行http-server
來檢查demo可否正常運行。
到這一步你能夠push到你的github倉庫,並把gh-pages設置成master分支,那個地址應該就能展現你的demo了,別忘了放到readme中讓你們看看哦!
在最後的發佈前記得在package.json
裏面填寫上版本,關鍵詞,描述,license等信息,而且寫好README.md
,LICENSE
等文件. 這樣能夠更好的讓別人瞭解和使用你的項目哦。
npm login npm publish
注意可能會出現重名狀況,這時候請使用你帳戶的命名空間
修改你的 package.json "name": "@zhangzhengyi12/vue-scrollbars"
別人引入的時候也要
加命名空間
最後仍是留點私心,宣傳一下最近寫的一個滾動組件,主要面向 PC 端 ,若是你有相似的需求 不妨看看[https://github.com/zhangzheng...]