一、初始化本地開發項目
采用vue-cli,初始化一個vue項目
1.安裝node,默認會安裝npm
去node官網下載並安裝,安裝完后打開cmd,查看是否安裝成功
2.安裝vue-cli
npm install -g vue-cli
安裝完后,同樣可以查看下安裝情況
3.初始化一個vue項目
vue init webpack my-plugin
然后填寫相關信息:
然后進入項目
cd my-plgin
安裝項目依賴
npm install
啟動項目
npm run dev
打開瀏覽器,看到項目已經啟動成功了
二、插件開發
插件通常會為 Vue 添加全局功能。插件的范圍沒有限制——一般有下面幾種:
-
添加全局方法或者屬性,如: vue-custom-element
-
添加全局資源:指令/過濾器/過渡等,如 vue-touch
-
通過全局 mixin 方法添加一些組件選項,如: vue-router
-
添加 Vue 實例方法,通過把它們添加到 Vue.prototype 上實現。
-
一個庫,提供自己的 API,同時提供上面提到的一個或多個功能,如 vue-router
MyPlugin.install = function (Vue, options) { // 第一種方法. 添加全局方法或屬性 Vue.myGlobalMethod = function () { // 邏輯... } // 第二種方法. 添加全局資源 Vue.directive('my-directive', { bind (el, binding, vnode, oldVnode) { // 邏輯... } ... }) // 第三種方法. 注入組件 Vue.mixin({ created: function () { // 邏輯... } ... }) // 第五種方法. 添加實例方法 Vue.prototype.$myMethod = function (methodOptions) { // 邏輯... } // 第六種方法,注冊組件 Vue.component(組件名, 組件) }
toast提示
可以選擇
Vue.prototype
,輸入框自動獲取焦點可以選擇
Vue.directive
指令,自定義組件可以選擇
Vue.component
的形式。
新建一個plugin目錄,放置我們要開發的插件,比如這里我們做一個簡單的total彈框顯示
然后我們搭建插件的基本殼子,test.js中代碼:
import testToast from './toast.vue' let test = {} // 方法的第一個參數是傳入的Vue,第二個是自定義的插件參數 test.install = function (Vue, options) { Vue.prototype.$msg = 'Hello I am test.js' Vue.prototype.$myMethod = function (arr) { if (arr.length < 0) { return false } else { arr = arr.join('連接你我') return arr } } // testPanel.name 組件的name屬性 Vue.component(testToast.name, testToast) } export default test
index.js中代碼:
module.exports = require('./lib/test')
待插件開發好后,就可以在mian.js中這樣使用:
而后在我們的頁面中就可以直接像使用組件的方式使用插件:
基本思路和插件的殼子有了,下面就開始開發toast.vue,這插件的具體內容了
<template> <div> <div class="toast" ref='toastPosition' :class="{active: toastHidden}"> <div class="toast-warpper"> {{text}} </div> </div> </div> </template> <script> export default { name: 'test-toast', data () { return { text: '', toastHidden: false } }, created () { // this.toastPlugin() }, methods: { toastPlugin (msg, time) { this.text = msg this.toastHidden = true setTimeout(() => { this.toastHidden = false }, time) } } } </script> <style> .toast { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 0px; min-height: 0px; text-align: center; background: rgba(0, 0, 0, 0.5); border-radius: 5px; color: #fff; transition: all 0.5s; z-index: -1; opacity: 0; } .toast.active { width: 150px; min-height: 25px; opacity: 1; z-index: 11; } </style>
實現效果如下:
點擊按鈕,出現下面的toast彈框,2s后消失。至此,我們的插件就開發完了。
現在可以發布到GitHub或打包發布到npm上去。
三、上傳到GitHub上
1.對項目進行打包,使用npm run build打包,打包后打開根目錄下的dist文件夾,里面有一個index.html文件,打開運行,結果是白屏
原因:路徑不對,這里需要修改打包路徑,在項目的config --->index.js里面修改assetsPublicPath
2.打包后上傳到GitHub上
git
忽略監控我們打包后的dist文件夾,所以這里需要取消忽略,讓
git
監控
dist
文件夾,不然提交遠程庫的時候不會提交
dist
文件夾:
/dist/
這行代碼刪除,這樣,后面我們再
git add .
的時候就會監控
dist
文件夾了。

git add ./ git commit -m "XXX" git remote add origin https://github.com/wangibook/wangibook.git git push -u origin master
如果報Changes not staged for commit,可以用 git commit -am "xxx"
如果報一坨黃字,可以使用 git push -u origin master -f 強制提交(會覆蓋之前的,慎用)
第一次提交需要 git push -u origin master,后面就直接 git push 就可以了
接下來我們打開github上面的項目看下,刷新后看到,項目以上傳到遠程了,其中既有我們的源碼,也有打包后的dist文件
打開鏈接: https://wangibook.github.io/test-plugin-toast/dist/index.html#/ 就可以看到內容了
至此,我們上傳github的操作已經完成
四、發布到npm上,方便以后用
toast文件下面的index.js,里面就依據代碼,即導出我們的插件:
module.exports = require('./lib/test')
關於README.md,我們可以寫一個簡單的markdown文檔,
關於package.json文件,這個一開始是沒有的,這是npm包的配置文件。我們要首先進入toast文件夾的位置,
然后終端運行npm init
命令來初始化一個npm包配置文件,此時他會問你一些列問題來完成配置文件:
- name:包名,默認是文件夾名。但是這個名字是需要唯一的,如果你命的名字已經被使用過了,那就只能換個名字。至於怎么查看包名是否存在,你可以去npmjs官網搜索你的包名,如果沒搜索到則可以使用。

- version:包的版本,默認是1.0.0, 你可以更換,例如0.1.0或2.0.1等。
- description:包的描述。主要描述你的包是用來做什么的。
- entry point:包入口文件,默認是
Index.js
,可以自定義。 - test command:測試命令,這個直接回車就好了,因為目前還不需要這個。
- git repository:包的git倉庫地址,npm自動讀取
.git
目錄作為這一項的默認值。沒使用則回車略過。 - keyword:包的關鍵詞。該項會影響到用戶怎樣才能搜到你的包,可以理解為搜索引擎悠哈的關鍵詞。建議關鍵詞要能准確描述你的包,例如:"vpay vue-pay vue-password password"
- author:作者。例如你的npm賬號或者github賬號
- license:開源協議,回車就好。

下面是發布到npm上,注冊npm賬號
1.執行npm login命令登錄我們的npm賬號,輸入用戶名和密碼(輸入密碼沒有提示)
如果配置了淘寶鏡像,先設置回npm鏡像:
npm config set registry http://registry.npmjs.org
這樣就發布成功了。我們去npm官網查一下我們的包:
如果發布成功后沒有搜到,就稍微等幾分鍾。

點擊進去看下,一切正常。以后就直接可以通過npm i test-plugin-toast -g 將插件安裝到我們的項目中了。