成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

技巧分享:優雅的獲取 package.json 文件

技巧分享:優雅的獲取 package.json 文件

前端(vue)入門到精通課程:進入學習
API 文檔、設計、調試、自動化測試一體化協作工具:點擊使用

日常開發中我們都知道package.json是對項目或者模塊包的描述,里面包含許多元信息,那么應該如何讀取package.json獲取里面的信息呢?發揮作用的就是咱們今天的主角——read-pkg,關鍵源碼只有30行左右,接下來就一起細看一下實現,也算是為后續開發自己的工具包奠定基礎!【相關教程推薦:nodejs視頻教程】

收獲清單

  • 調試源碼
  • 優雅的獲取package.json
  • 規范包元數據
  • import.meta.url的應用

學前準備

下載源碼

git clone https://github.com/sindresorhus/read-pkg.git cd read-pkg&&yarn
登錄后復制

一般源碼學習先看README.md和package.json,readme教用法,package.json則會注明命令,一般我們調試也是從package.json的script入手,甩個截圖:

技巧分享:優雅的獲取 package.json 文件

這命令第一次見可能不知道它想表達啥,再往下看devDependencies就可以知道三個命令分別對應三個包,不知道包干嘛的?自行百度去,一般包的用法都能在npm上搜到

技巧分享:優雅的獲取 package.json 文件

  • ava
node.js測試包

技巧分享:優雅的獲取 package.json 文件

  • tsd
檢測ts類型

技巧分享:優雅的獲取 package.json 文件

  • xo
(ESLint包裝器),具有很好的默認值

技巧分享:優雅的獲取 package.json 文件

源碼調試分析

提前在入口文件打好斷點,然后點package.json的script中的調試腳本按鈕開啟調試,如果沒有這個按鈕,則可能需要更新vscode。

技巧分享:優雅的獲取 package.json 文件

源碼結構分析

  • 引入依賴

// node進程 import process from 'node:process'; // fs文件模塊 import fs, {promises as fsPromises} from 'node:fs'; // path 路徑模塊 import path from 'node:path'; // url模塊 import {fileURLToPath} from 'node:url'; // 解析json,并且會伴隨有用的報錯,https://github.com/sindresorhus/parse-json#readme import parseJson from 'parse-json'; // 規范化包元數據 https://github.com/npm/normalize-package-data#readme import normalizePackageData from 'normalize-package-data';
登錄后復制

  • 將url轉化為文件路徑

// fileURLToPath將url轉化為文件路徑 const toPath = urlOrPath => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;
登錄后復制

隨著調試來到了test文件,有幾個概念在很多源碼中都會看到,因此值得我們關注一下,下面分別解析:

技巧分享:優雅的獲取 package.json 文件

import.meta.url

主要是應用于__filename和__dirname在ES模塊不可用

技巧分享:優雅的獲取 package.json 文件

path.dirname

用于獲取指定路徑的目錄名稱

fileURLToPath(import.meta.url)

提取路徑

process.chdir

更改Node.js進程的當前工作目錄,或者在執行失敗時拋出異常(例如,如果指定的目錄不存在)。

技巧分享:優雅的獲取 package.json 文件

  • readPackage方法(異步讀取)

export async function readPackage({cwd, normalize = true} = {}) { // 默認用process.cwd獲取當前工作目錄,獲取工作目錄     cwd = toPath(cwd) || process.cwd(); // 獲取package.json相對當前工作目錄的絕對路徑     const filePath = path.resolve(cwd, 'package.json'); // 異步讀取package.json并解析,fsPromises異步文件模塊     const json = parseJson(await fsPromises.readFile(filePath, 'utf8'));    // 規范化包元數據     if (normalize) {         normalizePackageData(json);     }       return json;  }
登錄后復制

  • readPackageSync方法(同步讀取)

export function readPackageSync({cwd, normalize = true} = {}) {    // 默認用process.cwd獲取當前工作目錄,獲取工作目錄     cwd = toPath(cwd) || process.cwd();    // 獲取package.json相對當前工作目錄的絕對路徑     const filePath = path.resolve(cwd, 'package.json');    // 讀取package.json并解析     const json = parseJson(fs.readFileSync(filePath, 'utf8'));      // 序列化元數據     if (normalize) {          normalizePackageData(json);      }       return json;  }
登錄后復制

  • normalizePackageData作用
序列化前

技巧分享:優雅的獲取 package.json 文件

序列化后

技巧分享:優雅的獲取 package.json 文件

調試后發現序列化后會生成_id,對應測試用例中的t.truthy(package_._id)

總結

今天下載并調試了read-pkg的源碼,進一步了解了nodejs的path、url、process模塊對于讀取文件的應用,read-pkg麻雀雖小五臟俱全,完整的測試用例也是我們可以在自己的工具包中借鑒使用的!今天剛好是國慶,追夢人們國慶快樂哇~

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产日产高清欧美一区| 国产午夜精品久久久久免费视| 中文字AV字幕在线观看| 中文字幕无码乱码人妻系列蜜桃| 99亚洲乱人伦AⅤ精品| 菠萝视频免费最新在线观看| 西西444WWW无码大胆| 亚洲VA在线VA天堂VA无码| 少妇人妻无码永久免费视频| 免费AV大片在线观看入口| 高H日本视频一区| 国产亚洲精品拍拍拍拍拍| 久久狠色AV噜噜狠狠狠狠97| 午夜成人爽爽爽视频在线观看| 忘忧草WWW中文在线资源| 亚精区在二线三线区别99| 艳妇乳肉豪妇荡乳AV| SQUIRT VIDEO喷水抽| 国产精品爱久久久久久久小说| 亚洲色成人WWW永久网站| JEAⅠOUSVUE成熟少归A| 97性无码区免费| 国产AV无码专区亚洲AV毛片搜| 果冻十麻豆十天美十老师| 美女浴室洗澡裸体爆乳无遮挡| 日本老熟妇MATUREBBW| 成人无码A区在线观看视频| 久久精品国产亚洲夜色AV网站| 紧身裙女教师波多野结衣在线观看| 伦人伦XXX国产对白| 国产熟睡乱子伦视频在线观看| 男女作爱在线播放免费网站| 哦┅┅快┅┅用力啊┅警花少妇| 特级毛片内射WWW无码| 亚洲中文久久精品无码软件| 别揉我奶头~嗯~啊~| 狠狠色综合网久久久久久| 成 人片 黄 色 大 片| 色欲AV永久无码精品无码蜜桃| 日本一卡2卡3卡4卡| 亚洲国产综合精品 在线 一区 | 99久久人妻无码精品系列蜜桃| 高清一区二区三区免费视频| 久久久亚洲欧洲日产国码二区| 日韩人妻无码一区二区三区视频| 亚洲AV无码成人精品区国产| 一区二区乱子伦在线播放| 亚洲AV无码一区二区三区18| 国产在线精品一区二区在线看 | 国产又爽又黄又舒服又刺激视频| 老司机67194精品线观看| 少妇高潮喷水正在播放| 一边喂奶一边挨CAO| 国产成人精品免费午夜APP| 老太奶性BBWBBWBBW| 翁熄小莹女博士高潮连连| 欧美一级 片内射黑人B| 国产A V无码专区亚洲AV| 国产丶欧美丶日本不卡视频| 老乞丐没完没了73节| 免费少妇A级毛片人成网| 东北露脸46熟妇ⅩⅩXX| 久久亚洲精品无码VA大香大香| 铜铜铜铜铜铜铜铜铜好多水 | 亚洲AV无码乱码精品国产| 亚洲人成色77777在线观看大| 成 人 黄 色 网站 小说 免| 欧美黑人又大又粗高潮喷水| 小寡妇高潮喷水了| 性高朝久久久久久久3小时| AV鲁丝一区鲁丝二区鲁丝四| 被老汉耸动呻吟双性美人| 久久精品国产亚洲AV蜜臀色欲| 思思久久99热只有频精品66| 2018午夜福利| 精品亚洲成A人无码成A在线观看| 熟妇人妻精品一区二区三区颏| 免费人成年激情视频在线观看| 爽一点搔一点叫大声点| 亚洲成AV人片天堂网| 丰满人妻无奈张开双腿AV| 欧美肥胖老太大喷水| 鲁丝片一区二区三区免费| 亚洲AV无码专区色爱天堂老鸭窝| 粗大黑人巨精大战欧美成人| 免费无码又爽又刺激高潮软件 | 最新中文字幕AV无码专区| 理论片午午伦夜理片影院| 日本XXXX洗澡ⅩXXX偷窥| 中文在线最新版天堂8| 国产精品XXX大片免费观看| 国产乱码1卡二卡3卡四卡| 国产蜜臀AV在线一区尤物| 日日躁夜夜躁狠狠躁| FREE国产粉嫩熟妇XXXHD| 老妇擦她毛荫荫的玥户| 亚洲美女高潮久久久久| 国产无遮挡又黄又爽又色| 少妇人妻无码永久免费视频| 宝贝真乖四人一起NP| 欧美VPSWINDOWS性另类| 岳打开双腿开始配合交换| 久久成人A毛片免费观看网站 | 国产拍揄自揄精品视频| 天天摸夜夜添狠狠添高潮出水| 波多野结衣的电影| 漂亮人妻被中出中文字幕| 7777奇米四色成人眼影| 每天都在挨CAO中醒来H| 一面膜上边一面膜下边53分钟| 精品一线二线三线区别大吗| 亚洲精品国产成人AV蜜臀| 狠狠爱ADY亚洲色| 亚洲AV永久无码精品秋霞电影影| 国产乱码一区二区三区爽爽爽| 天堂资源官网在线资源| 国产AⅤ夜夜欢一区二区三区 | 日韩无人区一卡2卡三卡4卡仙| 被添高潮爱爱免费视频| 欧美熟妇另类久久久久久不卡| 24小时日本免费观看WWW| 男人J桶进女人J无遮挡| 综合人妻久久一区二区精品| 免费看行情的网站| 中文字幕AV伊人AV无码AV| 麻豆一二三区AV精品传媒| 中文字幕精品无码| 欧美A级情欲片在线观看免费| 99精品久久精品一区二区| 欧美熟妇内射深插| 巴西大屁股妓女BBW| 日韩Av无码一区二区| 丰满少妇被猛烈进AV毛片| 同学要做吗PO爱喝花茶的小酥肉 | 国产传媒精品1区2区3区| 无码人妻少妇伦在线电影| 国产日韩未满十八禁止观看| 亚洲AV成人无码| 精品国产成人亚洲午夜福利| 亚洲一本大道无码AV天堂| 两性午夜刺激性视频2345| 69ZXX少妇内射无码| 人妻少妇精品无码专区APP| 成在人线AV无码免观看麻豆 | 国产AV日韩AⅤ亚洲AV无码馆| 天天躁日日躁狠狠躁人妻| 国产免费无遮挡吸奶头视频 | 精品JAVAPARSER乱偷| 亚洲熟伦熟妇AV无码春| 麻豆精产国品一二三产区区| 9L国产精品久久久久尤物| 日韩精品无码观看视频免费| 国产精品久久久久久久久软件 | 国产乱妇乱子在线播放视频| 亚洲成AV人片一区二区| 久久影院九九被窝爽爽| CHINESE老熟妇老女人HD| 肉感饱满中年熟妇日本| 国产无遮挡又黄又爽动态图| 亚洲一区二区三区AV无码| 欧美乱大交XXXXX在线观看| 妇女AV中文精品字幕XXX| 亚洲AV涩涩涩成人网站| 久久久久亚洲AV无码专区喷水| ACTION对魔忍| 玩弄美艳馊子高潮秀色可贪| 精品亚洲国产成人蜜臀AV| 97在线视频人妻无码| 舌头伸进去添的我好爽高视频 | 夜夜躁狠狠躁日日躁视频| 欧美人与人动人物2020| 国产成人午夜在线视频A站| 亚洲精品无码久久久| 女被啪到高潮的GIF动态图无遮 | 国产精品VⅠDEOXXXX国产| 亚洲色18禁成人网站WWW永久| 欧美亚洲日韩国产区三| 国产嫖妓一区二区三区无码| 曰本伦理漂亮妈妈| 色翁荡息又大又硬又粗又爽| 妓女妓女影院妓女影库妓女网| 91精品人妻一区二区三区蜜蜜挑| 视频在线一区二区| 久久久久AV无码免费网| 成人AV片在线观看免费| 亚洲国产精品无码中文在线| 欧美日日日日BBBBB视频| 国产无遮挡吃胸膜奶免费看| 主人给我戴上奶牛榨乳器调教 | 黑人玩弄人妻中文在线| AV狠狠色丁香婷婷综合久久| 无码中文字幕VA精品影院| 老男人把舌头伸进我下面| 丰满爆乳在线播放| 夜夜精品浪潮AV一区二区三区| 日日狠狠久久偷偷四色综合免费| 妓女院18禁止观看| 北方有佳人电视剧全集免费观看| 亚洲国产成人久久精品99| 人人人妻人人澡人人爽欧美一区 |