@@ -2,6 +2,11 @@ const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
22const webpack = require ( 'webpack' )
33const Config = require ( 'webpack-chain' )
44module . exports = ( api , options ) => {
5+ const pluginOptions =
6+ options . pluginOptions && options . pluginOptions . electronBuilder
7+ ? options . pluginOptions . electronBuilder
8+ : { }
9+ const outputDir = pluginOptions . outputDir || 'dist_electron'
510 api . registerCommand (
611 'build:electron' ,
712 {
@@ -14,37 +19,32 @@ module.exports = (api, options) => {
1419 `See https://github.com/nklayman/vue-cli-plugin-electron-builder for more details.`
1520 } ,
1621 async ( ) => {
17- const buildRenderer = require ( '@vue/cli-service/lib/commands/build' )
18- . build
22+ const buildRenderer = require ( '@vue/cli-service/lib/commands/build' ) . build
1923 const fs = require ( 'fs-extra' )
2024 const builder = require ( 'electron-builder' )
2125 const rendererConfig = api . resolveChainableWebpackConfig ( )
2226 const defaultBuildConfig = {
2327 directories : {
24- output : 'dist_electron'
28+ output : outputDir
2529 } ,
26- files : [ 'dist/**/*' , 'node_modules/**/*' , 'package.json' ] ,
30+ files : [
31+ outputDir + '/bundled/**/*' ,
32+ 'node_modules/**/*' ,
33+ 'package.json'
34+ ] ,
2735 extends : null
2836 }
29- const userBuildConfig = ( function ( ) {
30- if (
31- options . pluginOptions &&
32- options . pluginOptions . electronBuilder &&
33- options . pluginOptions . electronBuilder . builderConfig
34- ) {
35- return options . pluginOptions . electronBuilder . builderConfig
36- } else {
37- return { }
38- }
39- } ) ( )
37+ const userBuildConfig = pluginOptions . userBuildConfig || { }
4038 const mainConfig = new Config ( )
4139 mainConfig
4240 . mode ( 'production' )
4341 . devtool ( 'source-map' )
4442 . target ( 'electron-main' )
4543 . node . set ( '__dirname' , false )
4644 . set ( '__filename' , false )
47- mainConfig . output . path ( api . resolve ( './dist' ) ) . filename ( 'background.js' )
45+ mainConfig . output
46+ . path ( api . resolve ( outputDir + '/bundled' ) )
47+ . filename ( 'background.js' )
4848 mainConfig . plugin ( 'uglify' ) . use ( UglifyJSPlugin , [
4949 {
5050 parallel : true ,
@@ -58,12 +58,17 @@ module.exports = (api, options) => {
5858
5959 console . log ( 'Bundling render process:' )
6060 rendererConfig . target ( 'electron-renderer' ) . output . publicPath ( './' )
61- await buildRenderer ( { _ : [ ] } , api , options , rendererConfig )
61+ await buildRenderer (
62+ { _ : [ ] , dest : outputDir + '/bundled' } ,
63+ api ,
64+ options ,
65+ rendererConfig
66+ )
6267 if ( fs . existsSync ( api . resolve ( './dist/fonts' ) ) ) {
6368 fs . mkdirSync ( api . resolve ( './dist/css/fonts' ) )
6469 fs . copySync (
65- api . resolve ( './dist /fonts') ,
66- api . resolve ( './dist /css/fonts')
70+ api . resolve ( outputDir + '/bundled /fonts') ,
71+ api . resolve ( outputDir + '/bundled /css/fonts')
6772 )
6873 }
6974 const bundle = webpack ( mainConfig . toConfig ( ) )
@@ -131,9 +136,7 @@ module.exports = (api, options) => {
131136 . target ( 'electron-main' )
132137 . node . set ( '__dirname' , false )
133138 . set ( '__filename' , false )
134- mainConfig . output
135- . path ( api . resolve ( './dist_electron' ) )
136- . filename ( 'background.js' )
139+ mainConfig . output . path ( api . resolve ( outputDir ) ) . filename ( 'background.js' )
137140 mainConfig . plugin ( 'uglify' ) . use ( UglifyJSPlugin , [
138141 {
139142 parallel : true ,
@@ -179,7 +182,7 @@ module.exports = (api, options) => {
179182 api . service . run ( 'serve' ) . then ( server => {
180183 console . log ( '\nLaunching Electron...\n' )
181184 const child = execa (
182- ' ./node_modules/.bin/electron dist_electron /background.js' ,
185+ ` ./node_modules/.bin/electron ${ outputDir } /background.js` ,
183186 {
184187 cwd : api . resolve ( '.' ) ,
185188 stdio : 'inherit' ,
0 commit comments