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