【发布时间】:2018-11-21 00:39:24
【问题描述】:
根据官网,电子文件的正确保存方法是:
npm install electron --save-dev
运行应用程序实际上需要电子(字面意思是:require()),这与top voted answer here 背道而驰。那么,如果这是一个例外,我们为什么要做出这个例外呢?
【问题讨论】:
标签: javascript electron package.json commonjs
根据官网,电子文件的正确保存方法是:
npm install electron --save-dev
运行应用程序实际上需要电子(字面意思是:require()),这与top voted answer here 背道而驰。那么,如果这是一个例外,我们为什么要做出这个例外呢?
【问题讨论】:
标签: javascript electron package.json commonjs
require 一个包的事实与它是否应该被视为依赖项或 devDependency(在 npm 意义上)无关。例如。许多项目使用 webpack API(即const webpack = require('webpack')),但将其列为 devDependency。
原因在你链接的帖子中也有解释:当你publish你的包时,如果消费者项目需要其他包来使用你的,那么这些必须列为dependencies。
如果您的包仅将某些模块用于构建、测试或将它们捆绑到 dist 文件中(即消费者项目将使用的内容),则不应在 dependencies 中提及这些模块。我们仍然在devDependencies 中列出它们以供开发。
现在对于电子应用程序,您将应用程序作为消费者项目的节点模块使用的可能性很小,因此上述约定并不真正相关。
此外,我们属于 electron 包作为构建输出的一部分捆绑在一起的情况。您的用户无需从 npm 获取 electron 即可使用您构建的应用程序。因此它很好地匹配了 devDependency 的定义。
话虽如此,IIRC 一些电子包装商将您的 dependencies 捆绑到构建的应用程序中,因此您仍然需要严格地填写此列表。
【讨论】:
dependencies和devDependencies没有区别?大部分时候我们开发一些服务器、网站等不会作为模块使用,所以大部分时间devDependencies和dependencies是一样的。
electron-builder 创建可执行文件时,为什么会出现以下错误:"electron" is only allowed in "devDependencies" stackoverflow electron builder
electron 是一个实际的依赖项,这就是为什么它对我来说仍然没有意义?无论如何,现在我遇到了另一个问题,我已经发布了一个关于它的问题here。如果你不介意你可以看看吗?
因为当您实际打包到安装程序中时,这些二进制文件不会被使用。大部分电子的安装程序/打包程序将使用电子二进制文件构建包,而不是使用依赖项。
【讨论】:
require('electron') 的行会被转换成别的东西?或者打包器嵌入electron?