最近在從新研究apicloud和html5plus開發app,因爲以前推薦使用靜態html開發,因此放棄使用。近兩年業餘玩轉了vue,天然而然就須要編寫plugin,方便集成這兩個框架。css
翻了翻vue cli的官方文檔,發現盡然沒有外部插件本地測試方法(若是你知道的話,請告訴我,謝謝!)。html
README.md
├── generator // 生成器
│ ├── index.js // 生成器執行入口
│ └── templates
│ ├── appconfig.xml
│ ├── build
│ │ └── plugins
│ │ ├── index.js
│ │ └── packapp.plugin.js
│ ├── pages.config.js
│ ├── public
│ │ ├── index.html
│ │ ├── static
│ │ │ └── js
│ │ │ ├── api.js
│ │ │ └── init.js
│ │ └── web_adapter
│ │ ├── adapter.html
│ │ └── script
│ │ ├── adapter.js
│ │ ├── config.js
│ │ ├── hammer.min.js
│ │ ├── myadapter.js
│ │ └── shake.js
│ ├── src
│ │ ├── main.js
│ │ ├── pages
│ │ │ └── hello
│ │ │ ├── App.vue
│ │ │ └── main.js
│ │ └── plugins
│ │ ├── index.js
│ │ ├── init.vue.js
│ │ └── ready.plugin.js
│ └── vue.config.js
├── index.js // 命令插件入口
├── logo.png // vue ui 管理工具顯示logo
└── package.json
複製代碼
最關鍵的generator/index.jsvue
module.exports = (api, opts, rootOptions) => {
api.extendPackage({
scripts: {
"wifi-start": "apicloud wifiStart --port 23456",
"wifi-stop": "apicloud wifiStop --port 23456",
"wifi-sync": "cross-env PLATFORM_ENV=none vue-cli-service build && apicloud wifiSync --project dist --updateAll false --port 23456 && apicloud wifiLog --port 23456",
"build:android": "cross-env PLATFORM_ENV=android vue-cli-service build",
"build:ios": "cross-env PLATFORM_ENV=ios vue-cli-service build"
},
devDependencies: {
"apicloud-cli": "^0.2.0",
"cross-env": "^5.2.0",
"fs-extra": "^7.0.1",
}
})
api.render('./templates')
}
複製代碼
├── README.md
├── generator
│ ├── index.js
│ └── templates
│ ├── appmanifest.json
│ ├── build
│ │ └── plugins
│ │ ├── index.js
│ │ └── packapp.plugin.js
│ ├── pages.config.js
│ ├── public
│ │ ├── helloh5.ttf
│ │ ├── index.html
│ │ └── static
│ │ ├── css
│ │ │ └── common.css
│ │ └── js
│ │ └── init.js
│ ├── src
│ │ ├── main.js
│ │ ├── pages
│ │ │ └── hello
│ │ │ ├── App.vue
│ │ │ └── main.js
│ │ └── plugins
│ │ ├── index.js
│ │ ├── init.vue.js
│ │ └── ready.plugin.js
│ └── vue.config.js
├── index.js
├── logo.png
└── package.json
複製代碼
最關鍵的generator/index.jshtml5
module.exports = (api, opts, rootOptions) => {
api.extendPackage({
scripts: {
"build:android": "cross-env PLATFORM_ENV=android vue-cli-service build",
"build:ios": "cross-env PLATFORM_ENV=ios vue-cli-service build"
},
devDependencies: {
"cross-env": "^5.2.0",
"fs-extra": "^7.0.1",
}
})
api.render('./templates')
}
複製代碼
"name":"@xxx/project-name"
便可雖然整個流程比較簡單,可是仍是有必要記錄下android