我正在使用各种ES6语法 http://es6-features.org(例如import
ETC。) &React https://reactjs.org/ code (JSX https://reactjs.org/docs/introducing-jsx.html) in my Electron https://electronjs.org/基于应用程序。在开发过程中,我使用电子预建编译 https://www.npmjs.com/package/electron-prebuilt-compile包(作为开发依赖)为了支持这些新功能,它工作得很好,没有任何错误。
但是在使用以下方式打包我的应用程序之后电子包装机 https://www.npmjs.com/package/electron-packager打包并运行可分发应用程序文件时,我遇到了不受支持的 ES6 相关错误,例如:
Unexpected token import
这就是我运行 electro-packager 命令的方式(注意平台和架构标志):
electron-packager . MyCoolApp --platform=linux --arch=x64
我的应用程序的打包/分发版本不支持 ES6/React 功能有什么原因吗?
Solved.
事实证明开发依赖默认情况下,在打包过程中会被省略,这意味着electron-prebuild-compile
对于打包的应用程序来说,package 是“不适用的”,没有它,ES6 就无法进行转编译。因此,为了停用此默认行为,我必须使用以下命令调用打包器命令--no-prune
标志,以便开发依赖将保留而不被删除:
electron-packager . MyCoolApp --platform=linux --arch=x64 --no-prune
此外,我还必须引入一个新脚本(让我们将其命名为:es6-init.js
)用于初始化主应用程序的脚本,以便在渲染之前“编译”代码(它应该用作应用程序的主要入口点脚本):
var appRoot = path.join(__dirname, '..');
require('electron-compile').init(appRoot, require.resolve('./main'));
参考:
- https://github.com/electron-userland/electron-compile#how-does-it-work-slightly-harder-way https://github.com/electron-userland/electron-compile#how-does-it-work-slightly-harder-way
- https://github.com/electron-userland/electron-packager https://github.com/electron-userland/electron-packager
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)