成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

多React Native項(xiàng)目時(shí)依賴管理的最佳實(shí)踐

AbnerMing / 2057人閱讀

摘要:此時(shí)會(huì)把當(dāng)前路徑作為一個(gè)本地,在全局路徑下創(chuàng)建一個(gè)軟鏈接。所有依賴于全局路徑下的都必須是一個(gè)版本的,并沒有提供多版本號(hào)依賴的解決方法。因此,還是建議選擇一個(gè)常用的版本安裝在全局路徑,個(gè)別需求其他版本號(hào)的的項(xiàng)目,使用來配置局部依賴。

在實(shí)際開發(fā)過程中,經(jīng)常需要同時(shí)運(yùn)行和修改多個(gè)React Native工程,比如運(yùn)行g(shù)ithub上的開源項(xiàng)目以觀察某種控件的實(shí)際效果。那么此時(shí),各項(xiàng)目下的初始化(npm install)就會(huì)非常的痛苦,因?yàn)镽eact Native的文件非常大,以0.17.0為例,安裝后達(dá)到309MB。盡管,我們可以通過阿里npm等鏡像站的方式加速下載的過程,但是下載后的進(jìn)一步編譯也非常地耗時(shí)。

此外,多React Native工程還帶來了React Native自身的冗余,如果創(chuàng)建了十幾個(gè)工程,那么多占用的空間輕松達(dá)到3GB以上,非常地不友好。

npm link原理

我的解決思路是:用npm link替代npm install。npm link [package-name]命令的原理是,去[prefix]/lib/node_modules/下檢索是否已經(jīng)全局安裝了當(dāng)前的package,如果是,則直接用軟鏈接的方法在本地路徑指向全局package。如果沒檢索到,則會(huì)先在全局路徑下安裝該package,再去建立軟鏈接。npm獲取全局路徑的命令是:npm config get prefix。

需要注意的是,有package.json的路徑下,不要類比npm install,就這么執(zhí)行npm link。此時(shí)npm link會(huì)把當(dāng)前路徑作為一個(gè)本地package,在全局路徑下創(chuàng)建一個(gè)軟鏈接。由此可知,npm link并不會(huì)像npm install一樣,讀取package.json中的依賴并自動(dòng)配置。

配置過程
npm install -g react-native
cd [program_path]
npm link react-native

簡單三步搞定。然后運(yùn)行react-native run-android,打個(gè)Android包檢測一下。

納尼,報(bào)錯(cuò)如下:

Looks like you installed react-native globally, maybe you meant react-native-cli?
To fix the issue, run:
npm uninstall -g react-native
npm install -g react-native-cli

原因很簡單,react-native框架其實(shí)由兩個(gè)部分組成:react-native和react-native-cli,前者用于提供編譯環(huán)境,后者則是封裝了react-native開發(fā)過程中所要用到的命令,如react-native start,實(shí)質(zhì)就是封裝了sh ./node_modules/react-native/packager/packager.sh。

官方文檔要求全局安裝react-native-cli,但是局部安裝react-native,這是有原因的。如果你先全局安裝了react-native-cli,會(huì)在/usr/local/bin下生成一個(gè)名為react-native的軟鏈接,其指向?yàn)椋?b>react-native -> ../lib/node_modules/react-native-cli/index.js*。而隨后再次"全局"安裝react-native的時(shí)候,又會(huì)生成一個(gè)名為react-native的軟鏈接,覆蓋了react-native-cli安裝時(shí)生成的軟鏈接,其指向是:../lib/node_modules/react-native/local-cli/wrong-react-native.js。由此可見,React Native官方已經(jīng)意識(shí)到了這個(gè)問題,然而不知何原因并不推薦全局安裝React Native。然而筆者從節(jié)約硬盤空間和加快初始化的角度,認(rèn)為還是有必要全局安裝React Native,從而快速npm link的,所以有必要研究該報(bào)錯(cuò)的原理。

因此,針對(duì)這個(gè)報(bào)錯(cuò),兩種解決方法:

npm install -g react-native,再npm install -g react-native-cli。然而,如果以后使用過程中又升級(jí)了全局React Native,此時(shí)需看方案2。

cd /usr/local/bin,ln -s ../lib/node_modules/react-native-cli/index.js react-native,即可重新創(chuàng)建一個(gè)指向react-native-cli的軟鏈接。如果prefix的地址不是默認(rèn)的,則ln -s prefix/lib/node_modules/react-native-cli/index.js react-native。

缺陷

當(dāng)前這個(gè)自動(dòng)添加統(tǒng)一依賴的方法,存在一個(gè)問題。所有依賴于全局路徑下的React Native都必須是一個(gè)版本的,npm link并沒有提供多版本號(hào)依賴的解決方法。因此,還是建議選擇一個(gè)常用的React Native版本安裝在全局路徑,個(gè)別需求其他版本號(hào)的React Native的項(xiàng)目,使用npm install來配置局部依賴。

插說一句,npm自身的依賴管理設(shè)計(jì)還是非常優(yōu)秀的,然而React Native實(shí)在是太大了,而且我們完全有理由相信,他會(huì)更大。他其實(shí)應(yīng)該是與Android SDK, Java SDK一般重量級(jí)的開發(fā)SDK,因此更應(yīng)該借鑒rvm,設(shè)計(jì)一個(gè)React Native Version Manager。然而卻委身于node_modules,因而產(chǎn)生了這種無奈的冗余。

====================================
如果您覺得我的文章對(duì)您有所啟迪,請點(diǎn)擊文末的推薦按鈕,您的鼓勵(lì)將會(huì)成為我堅(jiān)持寫作的莫大激勵(lì)。 by DesGemini

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/78440.html

相關(guān)文章

  • iOS原生混合RN開發(fā)最佳實(shí)踐

    摘要:交流群也定期更新最新的學(xué)習(xí)資料給大家,謝謝大家支持小伙伴們掃下方二維碼加入技術(shù)交流群 iOS原生混合RN開發(fā)詳解 做過原生iOS開發(fā)或者Android開發(fā)的同學(xué)們肯定也都了解Hybrid,有一些Hybrid的開發(fā)經(jīng)驗(yàn),目前我們企業(yè)開發(fā)中運(yùn)用最廣泛的Hybrid App技術(shù)就是原生與H5 hybrid,在早期的時(shí)候,可能部分同學(xué)也接觸過PhoneGap等hybrid技術(shù),今天我們就簡單來...

    B0B0 評(píng)論0 收藏0
  • 前端周刊第64期:你真會(huì)提問么?

    摘要:但是究竟什么是區(qū)塊鏈呢如何基于區(qū)塊鏈構(gòu)建去中心化的應(yīng)用這個(gè)系列文章很有料,有圖文解釋有代碼實(shí)例,非常適合入門。想知道我接下來會(huì)寫些什么歡迎訂閱我的掘金專欄或知乎專欄前端周刊讓你在前端領(lǐng)域跟上時(shí)代的腳步。 showImg(https://segmentfault.com/img/remote/1460000010417511); 共 2044 字,讀完需 4 分鐘。本期以《提問的智慧》作...

    wfc_666 評(píng)論0 收藏0
  • 前端每周清單半年盤點(diǎn)之 ReactReactNative

    摘要:前端每周清單半年盤點(diǎn)之與篇前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開發(fā)教程工程實(shí)踐深度閱讀開源項(xiàng)目巔峰人生等欄目。與求同存異近日,宣布將的構(gòu)建工具由遷移到,引發(fā)了很多開發(fā)者的討論。 前端每周清單半年盤點(diǎn)之 React 與 ReactNative 篇 前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn);分為...

    Barry_Ng 評(píng)論0 收藏0
  • 【譯】統(tǒng)一樣式語言

    摘要:原文地址原文作者譯文出自掘金翻譯計(jì)劃譯者校對(duì)者統(tǒng)一樣式語言在過去幾年中,我們見證了的興起,尤其是在社區(qū)。根本上來說,純粹用于只是一個(gè)命名規(guī)范,它要求樣式的類名要遵守的模式。 原文地址:A Unified Styling Language 原文作者:Mark Dalgleish 譯文出自:掘金翻譯計(jì)劃 譯者:ZhangFe 校對(duì)者:JackGit,yifili09 統(tǒng)一樣式語言 在過...

    fjcgreat 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<