在Electron中,如何仅使用electron-packager包含特定的node_modules?

时间:2017-01-31 09:28:47

标签: javascript regex node.js electron

我尝试打包我的电子应用,它需要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,你可以看到我被困在哪里。

任何建议都将非常感谢。谢谢!

1 个答案:

答案 0 :(得分:1)

来自打包者github page

  

小心不要在{0}}中加入您不希望进入最终应用的node_modules。如果将它们放在devDependencies的{​​{1}}部分中,默认情况下,与这些依赖项相关的模块都不会复制到应用程序包中。 (可以使用package.json标志关闭此行为。)

来自electron-packager API page关于--no-prune标志

  

运行包管理器命令,从输出的Electron应用程序中删除--prune devDependencies部分中指定的所有包。

您应该能够将package.json以外的所有包裹放在mqtt中并运行包装