<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      前言

      最近需要用到多包管理 monorepo 開發新項目,所以提前預研一下項目搭建。

      monorepo(monolithic repository)是一種項目架構,就是用一個倉庫管理多個項目(應用,庫),react和babel的源碼倉庫都是用這種方式在管理。

      優缺點略過,可以參考:精讀《Monorepo 的優勢》

      因為不需要 npm 發包之類的,所以沒用 lerna,就用 yarn workspace 就可以解決了,技術組合:yarn workspace + vite + typescript + react

      使用 yarn workspace 管理 monorepo 的依賴包

      通過 yarn workspace 可以管理 monorepo 的共同依賴包

      使用命令創建一個根目錄項目 workspace

      yarn create vite
      

      這樣我們得到一個簡單的基于 vite+react+ts 的腳手架項目,但其實我們只需要package.jsongitignoretsconfig.jsontsconfig.node.json四個文件,其他的都刪掉。

      workspacepackage.json中加入配置:

      "workspaces": [
          "packages/*"
      ],
      

      這樣便可以聲明我們使用 monorepo 的方式管理 packages 下的多個包。

      workspace根目錄下創建 packages 文件夾,然后在 packages 文件夾下運行命令

      yarn create vite
      

      創建多個子項目,如:@hanzilu/root、@hanzilu/mobile、@hanzilu/common。

      此時我們直接在workspace運行命令安裝 root 項目的依賴:

      yarn workspace @hanzilu/root install
      

      我們會發現安裝的依賴包直接安裝在了workspace下的node_modules中,而不是在 @hanzilu/root 項目下。

      workspace下運行命令:

       yarn workspace @hanzilu/root dev
      

      就可以啟動 root 文件夾下的項目了。

      不過我們不可能一個個去安裝所有子項目,那么就直接在workspace下運行命令即可:

      yarn install
      

      更多的一些常用命令:

      • yarn workspaces info [--json] 顯示當前各個子項目之間的依賴關系樹
      • yarn workspaces add / remove / upgrade [package] 新增、刪除、更新全局依賴
      • yarn workspace [name] add / remove / upgrade [package] 某個子項目新增、刪除、更新依賴
      • yarn worspace [name] [command] 執行某個項目下的命令

      通用的 typescript 配置

      上面的項目中并不是共用同一個 typescript 配置的,所以我們需要刪除各個子項目中的tsconfig.jsontsconfig.node.json

      然后我們修改workspace下的tsconfig.json中 include 為:

      "include":["packages/**/src"],
      

      也就是把 typescript 配置應用到這個目錄下。

      同樣的tsconfig.node.json中的配置改為:

      "include": ["packages/**/vite.config.ts"]
      

      對本地依賴項目的處理

      我們使用多包管理,可能是兩個不同的項目比如 @hanzilu/root 和@hanzilu/ mobile,想要使用統一的組件或者方法,這個方法在我們的 @hanzilu/common 中。

      那么首先改造一下我們的 common 項目,在 package.json 中將添加入口:

      "main":"./src/main.tsx",
      

      然后將 main.tsx 內容改為:

      const HelloWorld: React.FC = () => {
          return <div className="App">HelloWorld</div>;
      };
      
      export default HelloWorld;
      

      現在我們的 common 就是個很簡單的 HelloWorld 組件。

      那么我們怎么去讓@hanzilu/root 能夠使用到這個組件呢?

      我們就像安裝依賴庫一樣運行命令:

      yarn workspace @hanzilu/root add @hanzilu/common@0.0.1
      

      引用的時候也和依賴庫一樣:

      import HelloWorld from "@hanzilu/common";
      

      但是到了這一步你的 typescript 提示會報錯,你需要在workspace下的 tsconfig.json 加上這段配置:

      "compilerOptions": {
          //...
          "baseUrl": "./",
          "paths": {
              "@hanzilu/*": ["packages/*"]
          },
      }
      

      去告訴 typescript,@hanzilu/系列的包實際上是用的本地的 packages 目錄下的內容。

      至此,我們就可以正常進行項目的開發了。

      簡化命令行

      在進行上面操作的時候,應該會明顯感覺到命令行太長,輸入太繁瑣。

      所以我們需要在 package.json 中對常用的命令,進行簡化:

      "root": "yarn workspace @hanzilu/root", // 簡化命令
      "mobile":"yarn workspace @hanzilu/mobile",
      "dev:root": "yarn root dev",  // 開發root
      "dev:mobile": "yarn mobile dev",
      "build:root": "yarn root build", // 構建root
      "build:mobile": "yarn mobile build"
      

      總結

      總體而言沒遇到什么大問題,挺好用的,可能也跟剛接觸不知坑之深淺有關。

      關于 react 和 vite 的部分直接省略了,如果想要了解可以查看我的這篇文章:Vite+React 搭建開發構建環境實踐

      posted on 2023-03-07 16:40  韓子盧  閱讀(1991)  評論(0)    收藏  舉報



      主站蜘蛛池模板: 精品无码人妻| 亚洲乱码中文字幕小综合| 屁股中文字幕一二三四区人妻| 极品少妇无套内射视频| 日韩午夜福利片段在线观看| 色偷偷亚洲女人天堂观看| 99精品视频九九精品视频| 香港日本三级亚洲三级| 桂东县| 偷拍美女厕所尿尿嘘嘘小便| 麻豆果冻传媒2021精品传媒一区| 蜜臀久久精品亚洲一区| 成人无码一区二区三区网站| 在线免费不卡视频| 国产中文字幕在线一区| 亚洲春色在线视频| 久久国产精品久久久久久| 亚洲精品一区国产精品| 四虎成人精品无码| 国产午夜精品福利视频| 视频一区二区三区四区久久| 国产亚洲精久久久久久无码77777 久久66热人妻偷产精品 | 久久99精品久久久久久9| 国产亚洲精品成人av久| 亚洲成人av在线高清| 亚洲v欧美v国产v在线观看| 久久一日本道色综合久久| 国产成人精品一区二区三区| 免费人成视频在线观看不卡| 国内揄拍国内精品人妻久久| 亚洲另类无码一区二区三区| 疯狂做受XXXX高潮国产| 国产精品熟女亚洲av麻豆| 亚洲精品一区二区三区在线观看 | 日日猛噜噜狠狠扒开双腿小说| 国产精品一码二码三码| 少妇愉情理伦片高潮日本| 免费可以在线看a∨网站| 91精品国产自产91精品| 精品无码久久久久国产| 99在线视频免费观看|