這幾天在寫react-native,主要是集成了一些自己想要的組件当纱、方法方便以后調(diào)用呛每;然后上傳到npm包管理,方便以后可以直接install坡氯;
學習的道路總是漫長而又曲折的晨横,不懂撩妹的我,也只能寫寫筆記方便自己加強記憶箫柳,廢話不多手形,貼下步驟;
1悯恍、注冊用戶库糠;
在npm官網(wǎng)注冊?? https://www.npmjs.com/
注冊完成后,npm會發(fā)一封驗證郵件涮毫,一定要去驗證瞬欧,不然發(fā)布的時候還是會提示你先驗證郵箱,否則是提交不上去的罢防;我就在這里踩了一個小坑艘虎,哈哈哈。咒吐。野建。
2、創(chuàng)建自己的包文件
注冊完渤滞,當然是要開始開發(fā)自己的包贬墩;這里我是以react-native作為示例,主要是以iOS和Android平臺通用的一個mircetools
2.1 妄呕、創(chuàng)建自定義組件模版項目
2.1.1 陶舞、全局安裝 react-native-create-library
$ npm install -g react-native-create-librar
2.2.2、創(chuàng)建模板文件
我們用命令react-native-create-library創(chuàng)建項目绪励,并指定平臺為ios,android肿孵,指定android中的package唠粥,其他參數(shù)可以自行參考在react-native-create-library在github上的文檔說明,mircetools為模板項目名稱
$ react-native-create-library --package-identifier com.quenice.mircetools --platforms android,ios mircetools
重命名模板項目名稱
$ mv mircetools? react-native-microtools
備注:為什么要重命名項目名稱停做,不在一開始的時候就使用react-native-microtools文件名創(chuàng)建呢晤愧??蛉腌?
因為利用react-native-create-library生產(chǎn)的項目官份,一些跟組件相關(guān)的名稱或者類會默認加上react-native或者RN前綴。舉荔枝烙丛,如果初始項目名是react-native-microtools舅巷,那么package.json中定義的組件名將是react-native-react-native-microtools,android模塊中定義的相關(guān)類會是RNReactNativeMicrotoolsModule.java河咽,命名顯示上會不太好看钠右,所以筆者采用這種方式編寫。
2.2.3 項目文件目錄如圖一
3忘蟹、編寫代碼
由于只是做個簡單的示例飒房,所以我只在index.js文件暴露了幾個簡單的方法;
index.js
import { NativeModules }from 'react-native';
import {Linking, Platform}from 'react-native';
const {RNMicrotools }= NativeModules;
//export default RNMicrotools;
export default {
????? openLink:function(linkAddress){
???????????? return Linking.openURL(linkAddress);
????? },
????? openApp:function(appName){
??????????? let appAddress='';
??????????? let tip='';
??????????? switch (appName) {
?????????????????? case 'weixin':
? ? ? ? ? ? ? ?????????? appAddress= 'weixin://';
????????????????????????? tip='請安裝微信';
????????????????????????? break;
?????????????????? case 'alipay':
? ? ? ? ? ? ? ??????????? appAddress=Platform.OS=== "ios"?'alipay://' : 'alipays://';
????????????????????????? tip='請安裝支付寶';
????????????????????????? break;
??????? }
??????? Linking.canOpenURL(appAddress).then(supported => {
???????????? // 可以跳轉(zhuǎn)
? ? ? ? ? ? if (supported) {
???????????????????? Linking.openURL(appAddress)
???????????? }else {
????????????????????? alert(tip);
????????????????????? // 不能跳轉(zhuǎn) 未安裝或者其他錯誤
????????????????????? // 跳轉(zhuǎn)到下載鏈接或者提示用戶app沒安裝
? ? ? ? ? ? }
????? })
??? }
}
本人是前端開發(fā)媚值,iOS及Android沒啥研究狠毯,日后再跟上,哈哈哈杂腰;
代碼編寫完成垃你,準備好上傳項目代碼至github;
3、 代碼上傳
3.1喂很、在github創(chuàng)建項目倉庫惜颇;怎么創(chuàng)建之后另做一篇筆記,哈哈哈少辣,先自行上 https://github.com/ 查看
3.2凌摄、進入終端進入react-native-microtools項目,初始化git漓帅,提交代碼锨亏;
$ cd? react-native-microtools
$ git init
$ git add .
$ git commit -m 'react-native-microtools第一次提交'
$ git push
3.3、組件發(fā)布
開發(fā)好組件之后忙干,想在其他的項目(或者提供給其他人安裝使用)中通過npm install的方式安裝你的組件器予,那么你的組件必須發(fā)布到npm registry中。
3.3.1捐迫、npm registry
npm registry 是什么
簡單來說乾翔,npm registry就相當于一個包注冊管理中心。它管理著全世界的開發(fā)者們發(fā)布上來的各種插件,同時開發(fā)者們可以通過npm install的方式安裝所需要的插件反浓。
npm官方registry為:http://registry.npmjs.org/
國內(nèi)速度較快的為:https://registry.npm.taobao.org/
查看當前使用的registry:
$ npm config get registry
切換registry:(因為上傳到npm需用到官方的registry萌丈,所以最好切換回npm官方registry)
# 全局切換
$ npm config set registryhttp://registry.npmjs.org/
有時候你可能只想在執(zhí)行某些npm命令時臨時切換,這個時候雷则,可以使用--registry來指定臨時切換的registry辆雾,比如在npm發(fā)布
$ npm publish --registryhttp://registry.npmjs.org/
3.3.2、登錄npm registry賬戶
$ npm login
過程需要輸入 :
username???
password
可以通過以下命令查看是否登錄成功
$ npm whoami
3.4月劈、發(fā)布
第一次發(fā)布可使用以下命令
$ npm publish
更新發(fā)布則使用以下命令
$ npm version <update_type>
$ npm publish
$ npm version命令是用來自動更新版本號度迂,update_type取值有patchminormajor。那么在什么場景應該選擇什么update_type呢艺栈?看下表
暫時更新至這里英岭,之后再完善本地測試方式;有問題可在評論區(qū)聯(lián)系我湿右,一起討論一起進步
??????????????