为什么Electron需要保存为开发者依赖?

Why does Electron need to be saved as a developer dependency?

根据官网,电子文件的正确保存方式是:

npm install electron --save-dev

运行 应用程序实际上需要 Electron(从字面上看:require()),这与 top voted answer here 背道而驰。那么,即使是一个,我们为什么要创建这个例外?

因为当你实际打包到安装程序中时,这些二进制文件不会被使用。大多数电子安装程序/打包程序将使用电子二进制文件构建包,而不是使用依赖项。

require 一个包的事实与它应该被视为依赖还是 devDependency(在 npm 意义上)无关。例如。许多项目使用 webpack API(即 const webpack = require('webpack'))但将其列为 devDependency。

原因也在post你link中解释为:当你publish你的包时,如果消费者项目需要其他包来使用你的,那么这些必须是列为 dependencies.

如果您的包使用某些模块仅用于构建、测试或将它们捆绑到一个 dist 文件中(即消费者项目将使用的内容),那么这些模块不应在 dependencies 中提及。我们仍然将它们列在 devDependencies 中以供开发。

现在,对于电子应用程序,您几乎没有机会将您的应用程序作为消费者项目的节点模块使用,因此上述约定并不相关。

此外,我们遇到了 electron 包被捆绑为构建输出的一部分的情况。您的用户无需从 npm 获取 electron 即可使用您构建的应用程序。因此它与 devDependency 的定义非常匹配。

话虽这么说,IIRC 一些电子包装商将您的 dependencies 捆绑到构建的应用程序中,因此您在填写此列表时仍然需要一些严谨。