【问题标题】:In Electron, how to include only specific node_modules with electron-packager?在 Electron 中,如何在电子打包器中仅包含特定的 node_modules?
【发布时间】:2017-06-16 16:07:22
【问题描述】:

我正在尝试打包我的电子应用程序,它需要 mqtt 和 node-notifier 模块。 所以我想做的就是排除除它们之外的所有node_modules。

假设我想从打包中排除这些文件:

  • npm 调试
  • gulpfile.js
  • .vscode

所以像这样设置 --ignore 选项:

--ignore='npm-debug|gulpfile\.js|\.vscode'

工作正常。但是另外除了mqtt和node-notifier之外的node_modules,我不知道如何制作正则表达式!

--ignore='npm-debug|gulpfile\.js|\.vscode|^((?!node_modules/mqtt).)$'  // NOT WORKING

只检查 node_modules, /^((?!node_modules/mqtt).)$/ 是有效的,但是将它们组合成单个正则表达式行,它不起作用。

我知道我的正则表达式是错误的,但我尝试了正则表达式字符的每一种组合和我的想象力,每一次尝试都失败了,在谷歌上找不到任何解决方案。

这是Regex Testing site,你可以看到我卡在哪里了。

任何建议将不胜感激。谢谢!

【问题讨论】:

  • 在您发布的第二个代码中,您有一个 ignore 而不是 ignore。无论如何,我通常使用--save-dev 保存所有模块并相应地将它们添加到我的 package.json 中,这样当我运行 electron-packager 时,它会自动将它们全部打包而没有问题。
  • @briosheje 这只是错字,我稍后会更新。反正我也是,已经设置了依赖:mqtt和node-notifier,其他的都是devDependencies。但是当我运行 electron-packager 时,它们仍然在打包的应用程序中!

标签: javascript regex node.js electron


【解决方案1】:

来自打包者github page

注意不要在最终应用中包含您不想要的node_modules。如果将它们放在package.jsondevDependencies 部分,默认情况下,与这些依赖项相关的任何模块都不会复制到应用程序包中。 (可以使用--no-prune 标志关闭此行为。)

来自电子包装商API page 关于--prune 标志

运行包管理器命令以从输出的 Electron 应用程序中删除在 package.jsondevDependencies 部分中指定的所有包。

您应该能够简单地将除mqtt 之外的所有包放入devDependencies 并运行打包

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 2016-08-26
    • 2018-08-10
    • 2019-09-15
    • 2018-09-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多