前端內(nèi)網(wǎng)開發(fā)npm安裝的幾種方法小結(jié)
1、介紹
最近有同學(xué)問我,怎么在不聯(lián)網(wǎng)的情況下安裝依賴。一般我們開發(fā)都是有網(wǎng)的,那么配置一下register一下鏡像路徑就可以從國內(nèi)的阿里云,淘寶,華為云,騰訊云等國內(nèi)鏡像文件。
有些同學(xué)開發(fā)項(xiàng)目會在內(nèi)網(wǎng)開發(fā),所以就需要離線去npm install一些依賴。
2、非聯(lián)網(wǎng)/離線安裝方法
—2.1搭建內(nèi)網(wǎng)私服
我先通過一臺電腦搭建一個(gè)內(nèi)網(wǎng)服務(wù),verdaccio是一個(gè)輕量級的私有npm代理注冊服務(wù)
//先安裝一個(gè)代理服務(wù) npm install -g verdaccio //運(yùn)行 verdaccio //運(yùn)行后的默認(rèn)端口是4873,此時(shí)我們就可以設(shè)置鏡像路徑為這個(gè)代理地址 npm set registry http://localhost:4873/ //其他需求,如果你想要發(fā)布資源,推送到這個(gè)地址 npm publish --registry http://localhost:4873/ //項(xiàng)目成員安裝依賴 npm install <package> --registry http://localhost:4873/ //也可以在項(xiàng)目中創(chuàng)建一個(gè).npmrc文件 registry=http://localhost:4873/
—2.2npm pack 歸檔文件
重點(diǎn)講一下這個(gè)方法
思路:首先我們用一臺電腦,聯(lián)網(wǎng)狀態(tài),去把所有依賴全部安裝好,然后通過代碼打成壓縮包,拷貝到指定目錄下
跟隨潮流,同ts來吧,基礎(chǔ)的創(chuàng)建項(xiàng)目啥的就不說了,講重點(diǎn)
創(chuàng)建完項(xiàng)目后,如果需要用到ts,就執(zhí)行這個(gè)命令tsc --init去創(chuàng)建一個(gè)tsconfig.json文件,在這個(gè)文件中將module:""設(shè)置為commonjs,即module:“commonjs”,這里涉及到.js,.cjs,.mjs幾種后綴的知識點(diǎn),有機(jī)會再講。。。
這里為什么要用commonjs,因?yàn)槲覀冊诰帉懘a的時(shí)候,是用的esm,esm不支持__dirname,__dirname只能在cjs中使用,后面我們編譯出來就是cjs
我用去新建一個(gè)index.ts文件
import { exeSync } from 'node:child-process' import fs from 'node:fs' import path from 'node:path' //存放我們打包后的文件目錄 const packageDir = path.join(__dirname, './packages') //存在則不需要重復(fù)打包 if(!fs.existsSync(packageDir)){ fs.mkdirSync(packageDir, {recursive: true}) } //讀取node_modules文件目錄下的文件 const node_modules = path.join(__dirname, './node_modules') function buildPackage() { const dirFileList = fs.readdirSync(node_modules ).filter(dit => { //排除.開頭文件和@符號開頭文件,其他請自行排除 return !(dirFileList .startWith('.') || dirFileList .startWith('@')) }) //遍歷所查詢到的文件 dirFileList && dirFileList .map(dir => { //拿到文件的完整路徑,后續(xù)打包路徑 const modules = path.join(node_modules, dir) //打包命令,需要引用,在第一行 exeSync('npm pack', { cwd: modules }) //將打包完的tgz文件找到 const tgzfile = fs.readdirSync(modules).find(file => { return file.endsWith('.tgz') }) if(tgzfile){ //將找到的打包tgz文件移動到指定的package目錄中 fs.renameSync(path.join(modules,tgzfile), path.join(packageDir,tgzfile)) } }) } //執(zhí)行 buildPackage() //安裝命令 npm install ./packages/xxxx.tgz
—2.3U盤拷貝
這個(gè)就不多說了
總結(jié)
到此這篇關(guān)于前端內(nèi)網(wǎng)開發(fā)npm安裝的幾種方法的文章就介紹到這了,更多相關(guān)前端內(nèi)網(wǎng)npm安裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IE中JS跳轉(zhuǎn)丟失referrer問題的2個(gè)解決方法
這篇文章主要介紹了IE中JS跳轉(zhuǎn)丟失referrer問題的2個(gè)解決方法,算是IE的一個(gè)BUG吧,本文提供了2個(gè)方法解決這個(gè)問題,需要的朋友可以參考下2014-07-07layui中使用jquery控制radio選中事件的示例代碼
今天小編就為大家分享一篇layui中使用jquery控制radio選中事件的示例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08JavaScript中檢測數(shù)據(jù)類型的四種方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了四個(gè)JavaScript中檢測數(shù)據(jù)類型的常用方法,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以參考一下2023-04-04TypeScript泛型參數(shù)默認(rèn)類型和新的strict編譯選項(xiàng)
這篇文章主要介紹了TypeScript泛型參數(shù)默認(rèn)類型和新的strict編譯選項(xiàng),對TypeScript感興趣的同學(xué),可以參考下2021-05-05理解Javascript_09_Function與Object
在《理解Javascript_08_函數(shù)對象》中講解了很多函數(shù)對象的問題,同時(shí)也留下了許多疑問,今天讓我們來解答部分問題。2010-10-10js判斷背景圖片是否加載成功使用img的width實(shí)現(xiàn)
判斷背景圖片是否加載成功想必大家對此很陌生吧,會了之后就可以判斷css背景圖片了,具體判斷代碼如下,感興趣的朋友可以參考下哈2013-05-05javascript json字符串到j(luò)son對象轉(zhuǎn)義問題
今天小編就為大家分享一篇關(guān)于javascript json字符串到j(luò)son對象轉(zhuǎn)義問題,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-01-01