簡體   English   中英

僅使用非捆綁依賴項發布 NPM package

[英]Publish NPM package with only non-bundled dependencies

假設我們正在開發一個小型 javascript 庫L

代碼在 ES6 中。 要使用一些實用程序 function,比如debounce ,我們安裝 lodash 作為依賴項。

At build the webpack transpiles the code, bundling the tree shaked lodash code, and we end up with a nice little javascript file we want to publish and share as a npm package.

現在, package.json文件將 lodash 列為依賴項。 但這僅在構建時是正確的,在生產中並不是真正需要的。

處理這種情況的正確方法是什么? 將 lodash 視為 devDependency 是否有意義? 因此,只有 webpack 的externals組件才是“真正的”依賴項?

還是我們應該在發布之前以某種方式篡改package.json文件?

你知道處理這個問題的項目的任何真實例子嗎?

Webpack 將項目的代碼與非外部依賴項的使用代碼“合並”到一些bundle.js文件中。 然后,此文件與 package.json 文件一起發布到package.json文件,其中列出了所有依賴項,獨立於外部或嵌入式。

dependencies項(或optionalDependenciespeerDependencies )中引用的所有包代碼都應該是“生產”代碼。 devDependencies中的代碼預計僅在“開發”時使用,因此是“開發”代碼。 在這個原則下,我認為將非外部依賴聲明為開發依賴是不正確的。

但是,如果在已發布的package.json文件中同樣聲明了所有依賴項,無論是嵌入的還是外部的,那么運行時環境就無法知道哪些是需要提供給 ZEFE90A8E604A7C840E88D03 的真正依賴項。 package 將在運行時導入並且更好地可用。

對於 Node.js 環境,通常不使用捆綁包和 Webpack,因此這永遠不會成為問題 — 始終安裝所有依賴項(從不合並/捆綁)。

However, if you use the package.json file to drive some web-packages runtime environment, the way that dependencies are currently included in published package.json is not suitable.

您可能想看看Pika Web 的devDependencies package.json屬性,該屬性旨在解決類似的問題(即使他們的 mojo 是“沒有 Webpack 的未來”)。 They also introduce the concept of publishing a different package.json file than that which is checked-in (tampering the package.json before publishing, as you say).

有趣的是,它看起來像一個相關的工具 Pika Pack,引起了 NPM 人的注意,並被考慮成為 NPM 的一部分 所以,也許,NPM 已經意識到 web 項目工作流程的特定 package 格式需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM