npm-only-allow驗(yàn)證(only-allow的最佳替代品?)

\bullet 背景

? ? 基于項(xiàng)目統(tǒng)一管理規(guī)范辩越,需要對(duì)包管理器進(jìn)行統(tǒng)一嘁扼,目前市面上比較流行的是only-allow庫,但是經(jīng)過測(cè)試区匣,發(fā)現(xiàn)對(duì)multirepo的支持度不友好偷拔,見下文

\bullet only-allow的不足

? ??\alpha 安裝缺陷

? ??????\ast 一次性安裝

? ??????????\vdash 添加preinstall鉤子并設(shè)置指定的包管理器

? ??????????\vdash pnpm i

? ? ? ? ????????使用pnpm i安裝,發(fā)現(xiàn)only-allow包能正確給出提示亏钩,但是node_modules被正常安裝

? ??????????\vdash 刪除node_modules后莲绰,執(zhí)行cnpm i,表現(xiàn)和pnpm一致

????????\ast 單獨(dú)安裝

? ? ? ? ? ? 執(zhí)行pnpm|cnpm i lodash ,發(fā)現(xiàn)連攔截提示都沒有?

? ??\beta 其他

? ? ? ? 在使用了錯(cuò)誤的包管理器安裝后姑丑,當(dāng)出現(xiàn)錯(cuò)誤后蛤签,項(xiàng)目會(huì)生成npminstall-debug.log文件,當(dāng)再次切換到“合法的”包管理器安裝后栅哀,該文件仍然存在

? ? ? ? 如果先后使用了pnpm震肮,npm,則生產(chǎn)的lock文件會(huì)被保留

\bullet 結(jié)論

????由于以上三個(gè)不足留拾,我決定棄用only-allow戳晌,通過查找翻閱,發(fā)現(xiàn)類似功能的庫痴柔,但是由于其知名度不如only-allow沦偎,因此需要對(duì)其進(jìn)行校驗(yàn),以確保達(dá)到如下要求

? ??\ast 支持?jǐn)r截“非法”包管理器咳蔚,并不安裝node_modules

? ??\ast 當(dāng)從“非法”轉(zhuǎn)為設(shè)置的包管理器后豪嚎,需要?jiǎng)h除無用的文件,比如:上次安裝時(shí)的錯(cuò)誤文件谈火,或遺留的lock文件

\bullet 使用與驗(yàn)證

? ? 安裝npm-only-allow文檔添加如下代碼

? ??\vdash 統(tǒng)一安裝

? ??????\ast pnpm i

? ? ? ? ? ? 它可以正確給出提示(而且是中文的侈询,更加友好),且不會(huì)生產(chǎn)node_modules

? ? ? ? ? ? 可以看到糯耍,安裝錯(cuò)誤后生成了.pnpm-debug.log文件扔字,現(xiàn)在使用yarn安裝囊嘉,測(cè)試是否能正常安裝,以及是否還存在該錯(cuò)誤文件革为,發(fā)現(xiàn)符合預(yù)期

? ??\vdash 單個(gè)安裝

? ? ? ? 執(zhí)行pnpm i lodash哗伯,我發(fā)現(xiàn)是沒有被攔截掉的,翻了下文檔后發(fā)現(xiàn)篷角,是需要在項(xiàng)目執(zhí)行時(shí)才會(huì)針對(duì)單獨(dú)安裝進(jìn)行檢測(cè)的,則執(zhí)行npm run start系任,發(fā)現(xiàn)會(huì)被正確攔截恳蹲,并且列出了哪個(gè)依賴被錯(cuò)誤安裝了

? ? ? ? 此時(shí),再使用正確的包管理器yarn安裝(yarn add lodash)后俩滥,再重啟測(cè)試嘉蕾,發(fā)現(xiàn)程序運(yùn)行正常

\bullet 結(jié)論

? ? 通過在我自己的搭建的簡(jiǎn)易項(xiàng)目中測(cè)試(實(shí)際上測(cè)試了很多情況),該包基本上能滿足預(yù)期效果霜旧,但是有一點(diǎn)目前尚不支持错忱,那就是,如果我的項(xiàng)目目前已經(jīng)啟動(dòng)過了挂据,那它就只能等待下一次運(yùn)行時(shí)才能給出檢測(cè)結(jié)果以清,這一點(diǎn)可能是作者本身沒有考慮到吧,不過應(yīng)該也不難實(shí)現(xiàn)崎逃,待我去提個(gè)issue(2023-4-3更新:issue已解決)

\bullet npm-only-allow倉庫地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掷倔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子个绍,更是在濱河造成了極大的恐慌勒葱,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巴柿,死亡現(xiàn)場(chǎng)離奇詭異凛虽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)广恢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門凯旋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人袁波,你說我怎么就攤上這事瓦阐。” “怎么了篷牌?”我有些...
    開封第一講書人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵睡蟋,是天一觀的道長。 經(jīng)常有香客問我枷颊,道長戳杀,這世上最難降的妖魔是什么该面? 我笑而不...
    開封第一講書人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮信卡,結(jié)果婚禮上隔缀,老公的妹妹穿的比我還像新娘。我一直安慰自己傍菇,他們只是感情好猾瘸,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丢习,像睡著了一般牵触。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咐低,一...
    開封第一講書人閱讀 49,856評(píng)論 1 290
  • 那天揽思,我揣著相機(jī)與錄音,去河邊找鬼见擦。 笑死钉汗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鲤屡。 我是一名探鬼主播损痰,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼执俩!你這毒婦竟也來了徐钠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤役首,失蹤者是張志新(化名)和其女友劉穎尝丐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衡奥,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡爹袁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了矮固。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片失息。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖档址,靈堂內(nèi)的尸體忽然破棺而出盹兢,到底是詐尸還是另有隱情,我是刑警寧澤守伸,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布绎秒,位于F島的核電站,受9級(jí)特大地震影響尼摹,放射性物質(zhì)發(fā)生泄漏见芹。R本人自食惡果不足惜剂娄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望玄呛。 院中可真熱鬧阅懦,春花似錦、人聲如沸徘铝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惕它。三九已至场晶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間怠缸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來泰國打工钳宪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留揭北,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓吏颖,卻偏偏與公主長得像搔体,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疚俱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 管理器 npm,太慢了缩多,總會(huì)有莫名的bug呆奕,需要?jiǎng)h除 node_modules,在次安裝以后才能解決衬吆。 cnpm梁钾,...
    littleyu閱讀 1,285評(píng)論 0 0
  • 1.npm是Node官方提供的包管理工具,他已經(jīng)成了Node包的標(biāo)準(zhǔn)發(fā)布平臺(tái)逊抡,用于Node包的發(fā)布姆泻、傳播、依賴控制...
    shuo_fd6c閱讀 2,569評(píng)論 0 0
  • pnpm 是什么胎许?和 npm 什么關(guān)系峻呛? 現(xiàn)代前端開發(fā)中離不開 npm罗售, npm[https://www.npmj...
    limengzhe閱讀 7,278評(píng)論 0 11
  • 本文作者對(duì)比了當(dāng)前主流的包管理工具npm寨躁、yarn、pnpm之間的區(qū)別牙勘,并提出了合適的使用建議职恳,以下為譯文: NP...
    Bryan_Dong閱讀 1,077評(píng)論 0 3
  • 一、為什么需要yarn 作為一個(gè)前端方面,說到包管理首先想到的可能是node里的npm放钦。至今為止,它可以訪問在npm注...
    gavinDu閱讀 3,459評(píng)論 0 0