- 本文為 Marno 原創,轉載必須保留出處!
- 公眾號【 aMarno 】,關注後回覆 RN 加入交流群
- React Native 優秀開源專案大全:www.marno.cn
一、來龍去脈
在今年2月10日的時候,有人在 github 給 Facebook 提了一個建議,希望可以提供類似 Cordova 中模板的功能,具體地址在這裡:【戳我去圍觀】。Facebook採納了這個建議,在 RN 0.42 的版本中新增了個新功能,支援在新建工程時直接使用 --template命令 進行初始化。但當時僅提供了一套模板,所以這個功能多少顯得有點雞肋。在前幾天釋出的 RN 0.43-RC4 的版本中,官方提供了自定義模板工程的能力,這才使得這個功能實用性稍微增強了一點。
儘管這樣,還是有人說這是個雞肋功能,因為完全可以自己新建一個 RN 工程,新增好自己常用的三方庫和一些工具類後上傳到 github ,然後每次新建專案的時候直接 check 出來就好了。但是那樣的話如果 RN 版本更新,修改專案名稱等就會變得有些麻煩了。所以到底是否實用大家還是自己判斷吧,反正我是挺喜歡的。哈哈~也歡迎大家在留言區討論。
二、如何使用
在開始自己動手建立模板之前,我們先來了解一下模板工程工程怎麼使用。
使用模板工程建立新專案,我們就不再使用 react-native init XXX
的命令了,而是使用 react-native init XXX --template AAA
,其中 AAA 表示所用模板在 NPM 上的名稱,比如你在 NPM 上的倉庫名稱顯示為 “ react-native-template-marno” ,那 AAA 就是指 “ marno ”。
但是由於這個是 RN 0.43-RC4 提供的功能,所以在使用的時候,我們需要強制指定 RN 的版本,具體的命令是 react-native init MyApp --version 0.43.0-rc.4 --template navigation
,這裡用到 navigation 就是上文提到的官方提供的那個模板(等0.43正式版放出後就不用指定版本了)。初始化完成後,目錄結構如下:
三、自定義模板
如上面圖中所示,紅框圈中的就是多出來的,這幾個檔案就是我們自定義 template 需要的檔案,如果你修改了 index.android.js 或 index.ios.js 檔案,當然也需要把這兩個檔案也加到模板中。具體檔案目錄結構如下↓↓。也可以到 github 倉庫直接檢視示例的程式碼結構:【傳送門】
components:存放各類元件的資料夾,不涉及具體業務羅的單純元件等
lib:存放一些依賴檔案,公共類等
views:存放一個檢視相關的檔案,所有頁面都在這裡面
package.json:上傳 NPM 時用到的一些基本配置,還有一些其他的配置屬性,但這裡只需要這兩項即可。
{ "name": "react-native-template-turbo",//上傳 NPM 倉庫的名稱 "version": "0.0.2"//版本號,同一倉庫不可以上傳兩次同版本號的內容 }複製程式碼
- dependencies:模板工程中所依賴的三方庫
{ "react-navigation": "1.0.0-beta.5"//可以按照這個格式新增其他的三方庫 }複製程式碼
知道每個檔案的含義後,我們就按照這個格式新建一個資料夾,將自己常用的一些功能新增進來,比如 navigation 的配置,一些工具類,一些通用的頁面等。還有一些其他的功能可以新增,自由發揮就行!
在進入下個步驟之前先回答一個問題:上傳模板工程的目錄結構是不是必須按照上圖中的樣子?我在官方文件中沒有找到相關介紹,自己試了下貌似是不行,也不知道是不是我哪裡沒有配置對。這裡更正一下,目錄結構是可以按照自己的需求隨意更改的。之前是我檔案路徑沒配置對。
四、上傳 npm
當完成模板程式碼的編寫後,要上傳到 NPM 伺服器,這裡需要注意一下,上傳模板的名稱必須遵循【react-native-template-XXX】這個格式,如官方的模板【react-native-template-navigation】,所以取名的時候一定注意不要重名了。
接下來的步驟就沒有什麼難度了,因為上傳到 NPM 伺服器的操作是十分簡單的,步驟如下↓↓。(以下操作不僅可以用來上傳模板工程,還可以用來上傳 RN 開源庫。)
- 註冊賬號 www.npmjs.com/
- 終端執行命令
npm adduser --registry http://registry.npmjs.org
- 根據提示輸入第一步中註冊好的賬號、密碼、郵箱
- 將當前路徑切換到要釋出的模板的資料夾中(保證有package.json檔案)
- 終端執行命令
npm publish --registry http://registry.npmjs.org
進行釋出- 釋出成功後通過【https://www.npmjs.com/+ 外掛名 】可以在網頁訪問
整個操作是非常簡單的,而且只有第一次需要按照這個進行操作,以後如果更新版本的話,直接切換到當前路徑下,再執行一次上面第 5 步的操作就行了。
五、結語
不寫個結語就總覺得文章好像還沒寫完似的。哈哈~歡迎關注與交流,【點我交流】