我開發了一個 npm 包:
- 打字稿
- 網頁包
webpack.config:
{...
entry: './src/index.ts
}
圖書館樹:
- package.json
- src
- - index.ts
- - ...all_my_code...
我從這個 index.ts 檔案中匯出我所有的庫功能和型別。
問題是我的/dist目錄最終安裝在某人的 node_modules 中,包含我的庫 src 的子檔案夾,我不希望我的庫的用戶使用(這對他們來說是垃圾)。
如何不匯出這些子檔案夾?
uj5u.com熱心網友回復:
我從這個 index.ts 檔案中匯出我所有的庫功能和型別。
-- 您不能簡單地從index.ts檔案中匯出。你必須將你的 TypeScript 專案編譯成 JavaScript,然后你的庫的使用者應該使用你編譯的 JavaScript。這意味著總會有dist檔案夾。
您應該將package.json檔案與dist檔案夾一起發布,不包括src檔案夾。您可以使用 typescript 生成宣告檔案并將它們放在 dist 檔案夾中。
不,制作主題是如何隱藏dist檔案夾,以便消費者不會直接從那些 dist 檔案夾匯入。
您有三個選項 - 傳統捆綁器、桶模式或包匯出。
捆綁器方法:使用 Webpack 或 Rollup 之類的捆綁器將所有內容捆綁到一個檔案中。假設您有一個入口點:
{
// ...webpack config
entry: './src/index.ts'
}
bundle.js根據您的配置,這將只生成一個類似或類似的檔案。然后使用main欄位package.json并提供此生成檔案的路徑。這是通常遵循的最傳統的方法。
桶出口:第二種變化是使用桶模式。然后,您將使用普通的 Typescript 編譯您的包并將生成的檔案放在一個dist檔案夾中。但是使用桶模式,您將使用桶匯出檔案作為main檔案配置。這樣做的缺點是,如果您有 CSS、SCSS、Raw 加載器等自定義加載器,那么普通的 TS 編譯器是不夠的。
Package.json 匯出:最后,您可以使用新引入的Node.js 包exports。這是推薦的方法,因為它是面向未來的并且支持從 Node 版本16.x.x開始。這也是隱藏編譯在dist. 缺點是如果您打算將此庫與舊版本的 Node.js 一起使用,這將不起作用。此外,工具支架的邊緣很粗糙。
最后,您可以混合使用所有三種方法。我建議您將 Barrel 匯出與package.json exports.
附帶說明一下,作為一種好的做法,當您打算捆綁庫時,Rollup 是一個捆綁器。當您計劃捆綁應用程式時,應該使用 Webpack。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/481604.html
上一篇:安裝ng-bootstrap
下一篇:無法在VSCode中使用npm
