javascript - 为什么 Electron 需要保存为开发者依赖?
问题描述
根据官方网站,保存电子文件的正确方法是:
npm install electron --save-dev
Electron 实际上是运行应用程序所必需的(字面意思是:)require()
,这与此处的最高投票答案背道而驰。那么,如果这是一个例外,我们为什么要做出这个例外呢?
解决方案
您的包这一事实require
与它是否应该被视为依赖项或 devDependency(在 npm 意义上)无关。例如,许多项目使用 webpack API(即const webpack = require('webpack')
)但将其列为 devDependency。
原因在您链接到的帖子中也有说明:当您使用publish
您的包时,如果消费者项目需要其他包来使用您的包,那么这些必须列为dependencies
.
如果您的包仅使用某些模块来构建、测试或将它们捆绑到 dist 文件中(即消费者项目将使用什么),那么这些模块不应在dependencies
. 我们仍然将它们列出以devDependencies
供开发。
现在,对于电子应用程序,您将应用程序作为消费者项目的节点模块使用的可能性很小,因此上述约定并不真正相关。
此外,我们属于将electron
包捆绑为构建输出的一部分的情况。您的用户无需electron
从 npm 获取即可使用您构建的应用程序。因此它很好地匹配了 devDependency 的定义。
话虽如此,IIRC 一些电子打包程序将您捆绑dependencies
到构建的应用程序中,因此您仍然需要严格地填写此列表。