最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node獲取pnpm安裝的包源碼及代碼路徑操作

 更新時(shí)間:2022年08月04日 14:37:44   作者:CRPER  
這篇文章主要為大家介紹了Node如何獲取pnpm安裝的包源碼真實(shí)代碼路徑并操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

在改造老工程的包依賴(lài)管理的時(shí)候,有時(shí)候我們想引入一些社區(qū)比較好用的包管理;有時(shí)候一些阻塞點(diǎn)會(huì)阻攔我們,特別我們構(gòu)建流程可能會(huì)拷貝node_modules包源碼的行為;

舉個(gè)研發(fā)例子

不同公司的CLI因?yàn)槊鎸?duì)的業(yè)務(wù)場(chǎng)景和構(gòu)建場(chǎng)景不一樣,有些時(shí)候,我們會(huì)做一些差異化的特性,比如工程前端CLI有暴露代碼映射拷貝行為,就是打包的時(shí)候會(huì)把node_modules下的某些包的資源拷貝到特定路徑,用于后續(xù)其他處理

// 本地調(diào)試 editor 時(shí)需要打開(kāi)以下配置
  copy: {
    // editor source reference
    'dist/libs/ckeditor': 'node_modules/xxxx-editor/dist',
  },

npm安裝的目錄結(jié)構(gòu)是固定的,包名+源文件 ,所以尋址是固定的

問(wèn)題聚焦

當(dāng)我們想用pnpm這類(lèi)的時(shí)候,安裝的node_modules目錄結(jié)構(gòu)就是有他們自己的一些特性,而不是一個(gè)常規(guī)npm生成的node_modules結(jié)構(gòu)

pnpm 默認(rèn)創(chuàng)建了一個(gè)非平鋪的 node_modules,因此代碼無(wú)法訪問(wèn)任意包

如圖所示:

這種包名加版本號(hào)的,就沒(méi)法作為一個(gè)固定規(guī)律尋址了。因?yàn)榇嬖诳勺冃?!那么我們?shí)在要搞,有木有法子?

姿勢(shì)

node里面有一個(gè)api [require.resolve]很實(shí)用,剛好解決了我們這個(gè)場(chǎng)景;它可以返回require包的絕對(duì)路徑【基于package.json的入口字段】

demo

在我的一個(gè)本地工程內(nèi),采用pnpm安裝依賴(lài),輸出的絕對(duì)路徑可以尋址到源碼

console.log(require.resolve('yaml'));
console.log(require.resolve('axios'));
// /Users/code/engineering-tools/node_modules/.pnpm/yaml@2.1.1/node_modules/yaml/dist/index.js
// /Users/code/engineering-tools/node_modules/.pnpm/axios@0.21.4/node_modules/axios/index.js

那么怎么適配我們之前的配置文件呢?

// 本地調(diào)試 editor 時(shí)需要打開(kāi)以下配置
  copy: {
    // editor source reference
    'dist/libs/ckeditor': require.resolve('xxxx-editor'),
  },

這時(shí)候CLI運(yùn)行態(tài)的時(shí)候就可以動(dòng)態(tài)檢測(cè)到這個(gè)模塊的絕對(duì)路徑,拿到了絕對(duì)路徑。接下來(lái)想拷貝什么就很方便做到了~

以上就是Node獲取pnpm安裝的包源碼及代碼路徑操作的詳細(xì)內(nèi)容,更多關(guān)于Node pnpm安裝包路徑的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Linux系統(tǒng)中利用node.js提取Word(doc/docx)及PDF文本的內(nèi)容

    Linux系統(tǒng)中利用node.js提取Word(doc/docx)及PDF文本的內(nèi)容

    這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)中利用node.js提取Word(doc/docx)及PDF文本的內(nèi)容,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面跟著小編來(lái)一起看看吧。
    2017-06-06
  • 什么時(shí)候不能在 Node.js 中使用 Lock Files

    什么時(shí)候不能在 Node.js 中使用 Lock Files

    這篇文章主要介紹了什么時(shí)候不能在 Node.js 中使用 Lock Files,但是當(dāng)你在開(kāi)發(fā)要發(fā)布到 npm 的包時(shí),應(yīng)避免使用這類(lèi) lock file 。下面我們來(lái)一起了解一下吧
    2019-06-06
  • node.js包管理工具Yarn使用簡(jiǎn)介

    node.js包管理工具Yarn使用簡(jiǎn)介

    這篇文章介紹了JS包管理工具Yarn的基本用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • nodejs中的fiber(纖程)庫(kù)詳解

    nodejs中的fiber(纖程)庫(kù)詳解

    這篇文章主要介紹了nodejs中的fiber(纖程)庫(kù)詳解,本文講解了node-fibers的安裝、API介紹、方法使用示例等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • nodejs的壓縮文件模塊archiver用法示例

    nodejs的壓縮文件模塊archiver用法示例

    這篇文章主要介紹了nodejs的壓縮文件模塊archiver用法,結(jié)合實(shí)例形式分析了nodejs使用archiver模塊實(shí)現(xiàn)文件壓縮操作的步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-01-01
  • 一文詳解如何在IDEA中配置Node.js

    一文詳解如何在IDEA中配置Node.js

    idea中支持運(yùn)行很多種編程語(yǔ)言,只需要在電腦中安裝好對(duì)應(yīng)的語(yǔ)言環(huán)境,下面這篇文章主要給大家介紹了關(guān)于如何在IDEA中配置Node.js的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Node.js在child_process域和錯(cuò)誤冒泡及捕獲實(shí)踐

    Node.js在child_process域和錯(cuò)誤冒泡及捕獲實(shí)踐

    這篇文章主要為大家介紹了Node.js在child_process域和錯(cuò)誤冒泡及捕獲實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 簡(jiǎn)單談?wù)勱P(guān)于 npm 5.0 的新坑

    簡(jiǎn)單談?wù)勱P(guān)于 npm 5.0 的新坑

    最近使用到了npm5.0,第一次使用確實(shí)被驚艷了,但隨著而來(lái)的是一些坑,下面這篇文章主要給大家簡(jiǎn)單介紹了關(guān)于npm 5的一些新坑,需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看看吧。
    2017-06-06
  • nest.js,egg.js,midway,express,koa的區(qū)別小結(jié)

    nest.js,egg.js,midway,express,koa的區(qū)別小結(jié)

    本文主要介紹了nest.js,egg.js,midway,express,koa的區(qū)別小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Windows 系統(tǒng)下安裝和部署Egret的開(kāi)發(fā)環(huán)境

    Windows 系統(tǒng)下安裝和部署Egret的開(kāi)發(fā)環(huán)境

    Egret基于TypeScript開(kāi)發(fā)的,而TypeScript編譯工具tsc是基于Node.js 開(kāi)發(fā)的。所以在安裝過(guò)程中,我們先需要對(duì)于基礎(chǔ)支持工具進(jìn)行安裝。
    2014-07-07

最新評(píng)論

鄂尔多斯市| 华坪县| 瑞丽市| 拉萨市| 泉州市| 肃北| 布拖县| 博野县| 霍林郭勒市| 石台县| 定结县| 大化| 赤城县| 昌吉市| 兴宁市| 五家渠市| 社会| 桂东县| 双流县| 谢通门县| 邻水| 新民市| 葫芦岛市| 临邑县| 京山县| 宁阳县| 连云港市| 新化县| 双流县| 民权县| 桐乡市| 永靖县| 云霄县| 顺昌县| 宝丰县| 灵寿县| 新营市| 安丘市| 上思县| 刚察县| 集安市|