electron-builder install-app-deps 尝试包含 react-native,而我在 webpack 中设置了一个别名来 react-native-electron
electron-builder install-app-deps tries to include react-native while I have an alias set in webpack to react-native-electron
如何告诉 electron-builder 打包 react-native-electron 而不是 react-native?我在 electron-builder 文档中找不到任何关于别名的信息,这也令人惊讶,因为它不是原生模块,所以它不包含任何 .node
文件,而 webpack(通过 electon-webpack)已经处理了所有包装。
这是在 Ubuntu.
使用 electron-webpack 管理的 webpack 服务器的开发构建(使用命令 electron-webpack dev
)完美运行。
如果我尝试 yarn add react-native
它会构建,但是当我启动生成的应用程序时,它会打开但什么也不做。
我也试过复制react-native-electron文件夹并重命名为react-native。然后它确实构建了,但是如果我启动它,它甚至没有打开,但我确实看到它在系统监视器中什么也没做。
当我在没有 react-native 的情况下尝试 electron-builder install-app-deps
时,它会出错:
Error: Unresolved node modules: react-native
at /media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:108:17
From previous event:
at Collector.resolveUnresolvedHoisted (/media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:164:10)
at /media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:82:18
at Generator.next (<anonymous>)
at runCallback (timers.js:763:18)
at tryOnImmediate (timers.js:734:5)
at processImmediate (timers.js:716:5)
From previous event:
at Collector.collect (/media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:84:6)
at /media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/out/util/packageDependencies.js:123:47
at Generator.next (<anonymous>)
(...)
在我的 package.json 我有 electronWebpack 配置:
"electronWebpack": {
"renderer": {
"webpackConfig": "webpack.renderer.additions.js"
}
},
并在 webpack.renderer.additions.js 中:
const path = require('path')
const resolve = {
alias: {
'react-native': path.join(__dirname, 'node_modules/react-native-electron')
}
}
module.exports = {resolve}
似乎 devDependencies
的定义与我习惯的有点不同。在这种情况下,通常只是依赖项的包现在只被 webpack 使用,而不被 electron-builder 使用。 electron-builder 包括依赖项但不包括 devDependencies。所以所有没有原生组件的 js 模块都可以在 devDependencies 中,因为它们不必包含在最终的电子构建中,因为 webpack 已经捆绑了它们。 electron-builder 不查看 webpack 配置,因此它不知道别名,但事实证明像 ract-navigation 和它们的子依赖项(如 react-native)这样的包无论如何都不应该在构建中两次。
因此,将不应单独包含的所有内容移至 devDependencies,应用程序将进行编译。
它没有启动是因为错误,但这可能是另一个问题
如何告诉 electron-builder 打包 react-native-electron 而不是 react-native?我在 electron-builder 文档中找不到任何关于别名的信息,这也令人惊讶,因为它不是原生模块,所以它不包含任何 .node
文件,而 webpack(通过 electon-webpack)已经处理了所有包装。
这是在 Ubuntu.
使用 electron-webpack 管理的 webpack 服务器的开发构建(使用命令 electron-webpack dev
)完美运行。
如果我尝试 yarn add react-native
它会构建,但是当我启动生成的应用程序时,它会打开但什么也不做。
我也试过复制react-native-electron文件夹并重命名为react-native。然后它确实构建了,但是如果我启动它,它甚至没有打开,但我确实看到它在系统监视器中什么也没做。
当我在没有 react-native 的情况下尝试 electron-builder install-app-deps
时,它会出错:
Error: Unresolved node modules: react-native
at /media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:108:17
From previous event:
at Collector.resolveUnresolvedHoisted (/media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:164:10)
at /media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:82:18
at Generator.next (<anonymous>)
at runCallback (timers.js:763:18)
at tryOnImmediate (timers.js:734:5)
at processImmediate (timers.js:716:5)
From previous event:
at Collector.collect (/media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:84:6)
at /media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/out/util/packageDependencies.js:123:47
at Generator.next (<anonymous>)
(...)
在我的 package.json 我有 electronWebpack 配置:
"electronWebpack": {
"renderer": {
"webpackConfig": "webpack.renderer.additions.js"
}
},
并在 webpack.renderer.additions.js 中:
const path = require('path')
const resolve = {
alias: {
'react-native': path.join(__dirname, 'node_modules/react-native-electron')
}
}
module.exports = {resolve}
似乎 devDependencies
的定义与我习惯的有点不同。在这种情况下,通常只是依赖项的包现在只被 webpack 使用,而不被 electron-builder 使用。 electron-builder 包括依赖项但不包括 devDependencies。所以所有没有原生组件的 js 模块都可以在 devDependencies 中,因为它们不必包含在最终的电子构建中,因为 webpack 已经捆绑了它们。 electron-builder 不查看 webpack 配置,因此它不知道别名,但事实证明像 ract-navigation 和它们的子依赖项(如 react-native)这样的包无论如何都不应该在构建中两次。
因此,将不应单独包含的所有内容移至 devDependencies,应用程序将进行编译。 它没有启动是因为错误,但这可能是另一个问题