【问题标题】:Why does Electron need to be saved as a developer dependency?为什么 Electron 需要保存为开发者依赖?
【发布时间】:2018-11-21 00:39:24
【问题描述】:

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

npm install electron --save-dev

运行应用程序实际上需要电子(字面意思是:require()),这与top voted answer here 背道而驰。那么,如果这是一个例外,我们为什么要做出这个例外呢?

【问题讨论】:

    标签: javascript electron package.json commonjs


    【解决方案1】:

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

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

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

    现在对于电子应用程序,您将应用程序作为消费者项目的节点模块使用的可能性很小,因此上述约定并不真正相关。

    此外,我们属于 electron 包作为构建输出的一部分捆绑在一起的情况。您的用户无需从 npm 获取 electron 即可使用您构建的应用程序。因此它很好地匹配了 devDependency 的定义。

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

    【讨论】:

    • 能不能说,如果你的项目不会被其他项目作为模块使用,dependenciesdevDependencies没有区别?大部分时候我们开发一些服务器、网站等不会作为模块使用,所以大部分时间devDependenciesdependencies是一样的。
    • 当我尝试使用electron-builder 创建可执行文件时,为什么会出现以下错误:"electron" is only allowed in "devDependencies" stackoverflow electron builder
    • 嗨@oldboy,我猜你可能是上述答案最后一段中描述的情况,即你的打包程序试图将你的依赖项包含到你的包中,并且当它是时无法处理电子在该列表中(它很可能知道在省略时如何处理它)。随意提出一个新问题,详细说明您的具体问题。
    • 我想通了。我简单地将其移至开发依赖项,但我的印象是electron 是一个实际的依赖项,这就是为什么它对我来说仍然没有意义?无论如何,现在我遇到了另一个问题,我已经发布了一个关于它的问题here。如果你不介意你可以看看吗?
    【解决方案2】:

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

    【讨论】:

    • 这是否意味着带有require('electron') 的行会被转换成别的东西?或者打包器嵌入electron
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2023-03-18
    • 1970-01-01
    • 2018-09-06
    • 2017-04-09
    • 2010-11-20
    • 2021-05-29
    相关资源
    最近更新 更多