电子生成器没有在正确的位置复制我的 dist/node_modules 目录

Electron builder not copying my dist/node_modules directory in the right place

我有一个节点应用程序,我已经用 Electron 启动了。现在,我想用 electron-builder 打包它,但我正在处理这种奇怪的行为。通常,当我构建我的应用程序时,会生成一个 dist 文件夹,其中包含所有已转换的 javascript 文件以及 package.json。然后,我必须再次 运行 npm i --production 来设置我的生产依赖项。所以我想让 electron-builder 做的是在安装完所有内容后准确复制 dist 目录:

electron-builder build --linux AppImage

这是我的package.json相关配置:

  "main": "dist/app.js",
  "build": {
    "appId": "my.app",
    "files": [
      "dist/**/*"
    ]
  },

我猜想通过这个配置我告诉它复制 dist 目录及其内容。 AppImage 文件已构建,如果我解压缩它,我可以看到在其中创建了一个 resources 目录,其中包含一个 app.asar 文件。如果我提取 asar 内容,我可以看到 node_modules 被放置在与 dist 相同的级别,而不是在它里面!!所以我有:

  AppImage
  -- resources
  ---- app.asar
  ------ node_modules
  ------ dist (everything except node_modules)

当我启动应用程序时,它明显抱怨找不到 node_modulesThe docs 说有一些默认文件模式可以优先于用户定义的内容...

我也试过了:

"files": {
  "from": "dist",
  "to": "dist",
  "filter": ["**/*"]
}

而且似乎无法找到 package.json 文件。

有人在 this similar question 年前问过,没有人回答。有什么帮助吗?

最后我找到了方法,我不得不用我在 docs 中找到的 属性 来调整配置:includeSubNodeModules,默认为 [=12] =] 并且似乎在输出中包含 node_modules 子文件夹。此外,我还必须明确省略根 node_modules 文件夹,因为我不希望它出现在输出中。

  "build": {
    "appId": "myApplication",
    "files": [
      "dist/**/*",
      "!node_modules"
    ],
    "includeSubNodeModules": true
  },