久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

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

技巧分享:優雅的獲取 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號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
色爱综合网欧美| 91精品综合| 日韩精品91亚洲二区在线观看| 欧美日韩国产高清电影| 国产二区精品| 日韩专区一卡二卡| 91九色综合| 久久狠狠久久| 欧美激情五月| 日韩免费久久| 婷婷亚洲五月色综合| 奶水喷射视频一区| 日本成人中文字幕在线视频| 欧美日韩亚洲一区在线观看| 久久精品国产亚洲aⅴ| 日韩三区在线| 人人精品人人爱| 国产精品一页| 蜜桃精品在线| 亚洲区第一页| 国产一区二区三区亚洲| 亚洲手机视频| 日韩一区二区三区精品视频第3页| 国产精品白丝一区二区三区| 欧美久久天堂| 蜜芽一区二区三区| 欧美精品二区| 一区在线免费| 国产精品久久久久久久久免费高清| sm久久捆绑调教精品一区| 狠狠干成人综合网| 国产精品久久久免费| 99久久婷婷| 97久久亚洲| 久久久精品日韩| 日韩精品久久理论片| 日韩av二区| 久久亚洲精品伦理| 精品黄色一级片| 亚洲欧美久久| 国产一区二区三区黄网站| 美女尤物久久精品| 四虎国产精品免费观看| 蜜桃av一区二区三区电影| 国产一区二区视频在线看| 亚洲性视频在线| 亚洲不卡系列| 国产精品三级| 爽好多水快深点欧美视频| 国产不卡精品在线| 日本欧美在线| 欧美在线亚洲| 精品一区二区三区视频在线播放| 亚洲男女av一区二区| 久久久精品区| 日韩高清电影一区| 好看的av在线不卡观看| 国产精品久久久久蜜臀| 日韩高清不卡在线| 红桃视频国产一区| 国产91在线精品| 国产日本精品| 日韩在线一二三区| 久久精品1区| 成人精品视频| 国产精品永久| 亚洲精品一级| 91成人超碰| 精品三级国产| 久久精品97| 日本欧美一区| 亚洲狼人精品一区二区三区| 尤物网精品视频| 久久精品二区三区| 欧美13videosex性极品| 丁香婷婷久久| 久久精品国产久精国产| 久久爱www.| 国产精品草草| 久久av电影| 免费观看亚洲天堂| 国产精成人品2018| 国产毛片久久久| 日韩精品视频一区二区三区| 国产视频一区免费看| 91精品在线观看国产| 久久久久中文| 日韩网站中文字幕| 国产在线|日韩| 亚洲国产福利| 精品欧美日韩精品| 美女视频黄免费的久久| 国产精品一区二区三区www | 精品国产欧美| 久久精品一区二区三区中文字幕| 国产日韩一区| 国产精品香蕉| 国产黄色一区| 黄色精品视频| 97se综合| 久久国产日韩| 午夜精品免费| 一区二区日韩免费看| 午夜精品影视国产一区在线麻豆| 日本在线观看不卡视频| 欧美日韩 国产精品| 国产精品久久久久av蜜臀| 麻豆国产欧美一区二区三区 | 国产精品v日韩精品v欧美精品网站| 国产日韩亚洲| 国产一区三区在线播放| 成人福利视频| 91精品高清| 蘑菇福利视频一区播放| 午夜天堂精品久久久久| 国产欧美日韩| 日韩av二区| 日韩午夜精品| 欧美视频二区| 日韩1区2区| 国产亚洲在线观看| 日韩av一区二区在线影视| 国产欧美啪啪| 99久久婷婷| 日韩一区二区三区免费视频| 久久超碰99| 免费毛片在线不卡| 日韩精品一区二区三区免费视频| 国产欧美欧美| 丝袜美腿一区| 久久国产99| 国产精久久久| 亚洲不卡av不卡一区二区| 男人操女人的视频在线观看欧美| 欧美有码在线| 久久久五月天| 日韩午夜视频在线| 精品欧美视频| 玖玖玖国产精品| 精品久久网站| 喷白浆一区二区| 麻豆精品av| 99成人在线| 精品国产一区二区三区性色av| 在线成人动漫av| 国产人成精品一区二区三| 91精品啪在线观看国产18| 日本91福利区| 蜜桃av.网站在线观看| 亚洲欧美日韩视频二区| 欧美激情一区| 亚洲午夜免费| 91综合视频| 婷婷亚洲精品| 99精品网站| 国产精品九九| 国产毛片久久| 成午夜精品一区二区三区软件| 另类亚洲自拍| 国产91在线精品| 日韩一区二区三区四区五区| 日韩另类视频| 麻豆精品国产91久久久久久| 亚洲制服欧美另类| 日韩一区欧美| 国产精品巨作av| 综合视频一区| 青青久久av| 久久麻豆视频| 日韩高清不卡在线| 丝袜国产日韩另类美女| 少妇精品导航| 丰满少妇一区| 日本a口亚洲| 亚洲欧美视频| 久久一区二区三区电影| 国产一区二区三区网| 69精品国产久热在线观看| 在线视频免费在线观看一区二区| 国产一区二区三区免费在线 | 日韩av中文在线观看| 久久精品亚洲人成影院 | 久久精品伊人| 91精品丝袜国产高跟在线| 国产手机视频一区二区| 999国产精品视频| 精品久久亚洲| 你懂的亚洲视频| 国产精品任我爽爆在线播放| 亚洲免费毛片| 最新国产精品视频| 亚洲性色视频| 久久理论电影| 人人香蕉久久| 国产精品黑丝在线播放| 麻豆国产欧美一区二区三区| 欧美精品三级在线| 日韩三级视频| 日韩精品久久久久久| 亚洲三级毛片|