рдореИрдВ рд╕рднреА main.js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЙрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡реЗрдмрдкреИрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ (рдореИрдВ UI рдРрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдФрд░ рд╕рд░реНрд╡рд░ рдРрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ)ред
рдЕрдЧрд░ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ index.html рдареАрдХ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗрдмрдкреИрдХрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
webpack({
entry: [
'./main'
],
output: {
path: path.join(__dirname, 'asar'),
filename: 'main.js',
libraryTarget: 'commonjs2'
},
externals: ['electron'],
target: 'node'
});
рдореИрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ:
mainWindow.loadURL('file://' + __dirname + '/index.html');
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд╣рд░ рд╡реЗрдмрдкреИрдХ рдХреЙрд▓рд┐рдВрдЧ/рдЗрд╡реЗрд▓рд┐рдВрдЧ рд╕рд╛рдорд╛рди рдХреЗ рдХрд╛рд░рдг рд╣реИ рдЬреЛ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдХреЛрдИ рд╡рд┐рдЪрд╛рд░/рд╕реБрдЭрд╛рд╡? рдзрдиреНрдпрд╡рд╛рдж!
рдЖрдк рд╢рд╛рдпрдж webSecurity
рдХреЛ webPreferences
рдореЗрдВ BrowserWindow
рдореЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рд╕рдореБрджрд╛рдп рд╕реЗ рдорджрдж рдорд╛рдВрдЧреЗрдВред
@MihaiValentin рдЕрд░реЗ, рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╣рд▓ рдорд┐рд▓рд╛?
@MihaiValentin @singhshashi рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ __dirname
рдЬреИрд╕реЗ рдиреЛрдб рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ "рдореЙрдХ" рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ node.__dirname
рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ ... рдпрд╣ рдХрд╛рдо рдХрд░ рдЧрдпрд╛!
рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ target
рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ-рд▓рдХреНрд╖реНрдп-рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди-рд░реЗрдВрдбрд░рд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдпрд╣ рдореЗрд░рд╛ рдЕрдм рддрдХ рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛:
var webpack = require('webpack');
var path = require('path');
var webpackTargetElectronRenderer = require('webpack-target-electron-renderer');
var BUILD_DIR = path.resolve(__dirname, 'build');
var APP_DIR = path.resolve(__dirname, 'src');
var config = {
entry: APP_DIR + '/index.js',
output: {
path: BUILD_DIR,
filename: 'index.js'
},
node: {
__dirname: false,
__filename: false
},
module : {
loaders : [
{
test : /\.jsx?/,
include : APP_DIR,
exclude: /node_modules/,
loader : 'babel'
}
]
}
};
config.target = webpackTargetElectronRenderer(config);
module.exports = config;
@eiriarte рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЕрдЧрд░ рдореИрдВ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкреИрдХ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рдиреЛрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
рдореИрдВ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╕рд╛рдЭрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЬрд┐рдиреНрд╣реЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрдмреЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдореИрдВрдиреЗ рдЗрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ред рдореЗрд░реЗ main.js рдореЗрдВ рдореИрдВ рдРрд╕реА рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдмреЗрдмреЗрд▓ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдпрд╛рдд рдХреЗ рдмрдЬрд╛рдп рдореИрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬреЛ es7 рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдЬреИрд╕реЗ рдХрд┐ async рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдЙрд╕ рдХреЛрдб рдХреЛ рдбреЗрд╕реНрдХрдЯреЙрдкрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдирд╛рдордХ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рднреАрддрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ (рдЖрдк рдПрдХ рдмреЗрд╣рддрд░ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЕрдм рдореИрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдВрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕ рдмрдВрдбрд▓ рдХреЛ main.js рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
const myshell = require('./dist/desktopServices').myShell
;
рдореЗрд░реА webpack.config.main.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред
let config = {
target:'electron',
entry:'./desktopServices/desktopServices.js',
output:{
path:path.resolve(__dirname, 'dist'),
filename: 'desktopServices.js',
publicPath:'/dist/',
libraryTarget:'commonjs2'
},
resolve: {
extensions:["",".js",".json"]
},
module: {
noParse: /node_modules\/json-schema\/lib\/validate\.js/,
loaders:[{
test: /\.js?$/,
exclude: /node_modules/,
loader: 'babel-loader'
},
{
test: /\.json/,
loader: 'json-loader',
},
],
},
}
module.exports = config;
рд╕рдмрд╕реЗ рд╕рд╛рдл рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣ рдорд╛рд░реНрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд▓реЗ рд░рд╣рд╛ рд╣реВрдВ, рдЬрдм рддрдХ рдХрд┐ рдХреБрдЫ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬрд┐рдирдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдиреЛрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдмреЗрдмреЗрд▓ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рднреНрд░рд╛рдордХ рддреНрд░реБрдЯрд┐ рдирд┐рдХрд▓реАред рдореБрдЭреЗ not allowed to load local resource
рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рдереА рдХреНрдпреЛрдВрдХрд┐ рд╡реЗрдмрдкреИрдХ рдиреЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдирд╛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдпрд╣ рдЧрд▓рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдерд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ setTimeout
(рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдбрдХреНрдЯ рдЯреЗрдк) рдХреЗ рд╕рд╛рде ~рдлрд┐рдХреНрд╕ рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдЬреАрд╡рди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝ рд╕рдХреВрдВ:
setTimeout(() => {
win.loadURL(`file:///${__dirname}/index.html`);
}, 2000); // 1 second wasn't enough lol
рдореЗрд░реЗ рд▓рд┐рдП .. рдХрд╛рд░рдг рдпрд╣ рдерд╛ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдмрдВрдбрд▓ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░ рд░рд╣рд╛ рдерд╛ .. рдкрд╣реБрдВрдЪ рд╕реЗ рдмрд╛рд╣рд░ рдерд╛ ... рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╡рд╛рдкрд╕ рдЖрдХрд░ рдФрд░ рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ рдиреЛрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ .. рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдбреА
pathname: path.join(__dirname, '../../source/resources/views', 'index.html');
node: {
__dirname: false,
__filename: false
},
Google рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣рд╛рдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП FYI рдХрд░реЗрдВ: рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрдкрдХреЛ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рдореИрдВ рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдРрдк рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди-рдкреИрдХреЗрдЬрд░ рдХреЛ рдмрддрд╛рдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдореЗрд░реА рдмреЗрд╡рдХреВрдлреА рднрд░реА рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рд╕реАрдЦреЛ :)
рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдИ рдмрд╛рд░ рдЦреЛрдЬрд╛ рд╣реИ), рдпрд╣рд╛рдВ рд╡рд░реНрддрдорд╛рди рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:
рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЖрдкрдХрд╛ рдиреЛрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрд╕ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ electron-packager
рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдРрдк рдореЗрдВ рдХреЙрдкреА рдХрд░ рд░рд╣рд╛ рд╣реИ!
рдЬрдм рдЖрдк рдЕрдкрдирд╛ BrowserWindow()
рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ webSecurity
рдХреЛ webPreferences
$ рдХреЗ рднреАрддрд░ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ:
{
webPreferences: {
webSecurity: false
}
}
node.__dirname
рдЬреИрд╕реЗ рдиреЛрдб рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ "рдореЙрдХ" рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдХрд░ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: node: {
__dirname: false
}
setTimeout()
(рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ URL рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рджреЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдРрдк рд╕реЗ ready
рдИрд╡реЗрдВрдЯ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдмреЗрд╣рддрд░)редsetTimeout(() => {
win.loadURL(`file:///${__dirname}/index.html`);
}, 2000); // 1 second wasn't enough lol
app.on('ready', () => {
win.loadURL(`file:///${__dirname}/index.html`);
})
рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдерд╛
рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдЬреИрд╕реЗ рдиреНрдпреВрдм рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рд╡реЗрдмрдкреИрдХ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдореБрдЦреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдкрд░ http://localhost:8080/
рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╣реЙрдЯ рдореЙрдбреНрдпреВрд▓ рдкреБрдирдГ рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ file://
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде <iframe>
рдкрд░ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред
рдЬреИрд╕рд╛ рдХрд┐ @popey456963 рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдмрд╕ рд╡реЗрдм рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ electron-main
рдФрд░ electron-renderer
. рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрдмрдкреИрдХ рдХреЗ рд▓рд┐рдП рджреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИрдВ
const path = require('path');
const config_main = {
target: 'electron-main',
entry: path.resolve(__dirname, 'src/main/index.js'),
output: {
path : path.resolve(__dirname, 'static'),
filename: 'main.js'
},
externals: [{ 'electron-store': 'require("electron-store")' }],
resolve: {
alias: {
main : path.resolve(__dirname, 'src/main/'),
common : path.resolve(__dirname, 'src/common/')
}
}
};
const config_renderer = {
target: 'electron-renderer',
entry: path.resolve(__dirname, 'src/renderer/index.js'),
output: {
path : path.resolve(__dirname, 'static'),
filename: 'renderer.js'
},
externals: [{ 'electron-store': 'require("electron-store")' }],
resolve: {
alias: {
components : path.resolve(__dirname, 'src/renderer/components/'),
core : path.resolve(__dirname, 'src/renderer/core/'),
states : path.resolve(__dirname, 'src/renderer/states/'),
ui : path.resolve(__dirname, 'src/renderer/ui/'),
common : path.resolve(__dirname, 'src/common/'),
}
}
};
module.exports = [
config_main,
config_renderer
];
рдореИрдВрдиреЗ рдЖрд╡реЗрджрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ
node: {
__dirname: false
},
рдореИрдВрдиреЗ рдЕрдкрдиреЗ renderer.js
рдореЗрдВ __dirname
рдХреЛ рд╕рд╛рдВрддреНрд╡рдирд╛ рджреА рд╣реИ рдФрд░ рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрджрд┐ рдореЗрд░реЗ рдкрд╛рд╕ __dirname рдЧрд▓рдд рдпрд╛ рд╕рддреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИ рддреЛ рд╡реЗ рджреЛрдиреЛрдВ /
рдкреНрд░рд┐рдВрдЯ рдЖрдЙрдЯ рд▓реЗрддреЗ рд╣реИрдВ
рдмреЗрд╢рдХ рдЕрдЧрд░ рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреВрд░реНрдг рдпреВрдЖрд░рдПрд▓ рдбрд╛рд▓рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХреНрдпреЛрдВ __dirname
рд╕рд╣реА рд░рд╛рд╕реНрддрд╛ рджреЗрдиреЗ рд╕реЗ рдЗрдВрдХрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИред
webpackTargetElectronRenderer
рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИ: electron-main
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ electron-main
рдХреЛ рд╡реЗрдмрдкреИрдХ рдореЗрдВ webpackTargetElectronRenderer
рдЕрдкреНрд░рдЪрд▓рд┐рдд рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ electron-main
рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ
https://github.com/webpack/webpack/blob/master/lib/WebpackOptionsApply.js#L70 -L185
рдпрд╣рд╛рдВ рдЖрдк рдареАрдХ рдЙрд╕реА рдХреЛрдб рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
https://github.com/chentsulin/webpack-target-electron-renderer/blob/master/index.js
рдкрддрд╛ рдЪрд▓рд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдерд╛
node: {
__dirname: false
},
рдореЗрд░реА рдореБрдЦреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрдЬрд╛рдп рдореЗрд░реЗ рд░реЗрдВрдбрд░рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдореЗрд░реА рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓ рдкрд╕рдВрдж рдЖрддреА рд╣реИ рддреЛ рдореИрдВ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдКрдкрд░ рд░рдЦреВрдВрдЧрд╛ред
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?
@hbgdPro https://github.com/electron/electron/issues/5107#issuecomment -299971806, 1, 2 рдФрд░ 4 рд╕реЗ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдПрдВ, рд╕рднреА рдХреЛ рд╡реЗрдмрдкреИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
@ рдкреЛрдкреА456963 рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдкреВрдЫрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдХреЛрд╢рд┐рд╢ рдХрд░ рд▓реА рдереАред рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдерд╛ рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореБрдЭреЗ рдХреМрди рд╕реЗ рдлрд╝реЛрд▓реНрдбрд░ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╡реЗрдмрдкреИрдХ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдЕрднреА рдЗрд╕ рдкрд░ рдЦреБрдж рдЖрдпрд╛ рд╣реВрдВ, (рд╣рд╛рдп рдореИрдВ рд╡реЗрдмрдкреИрдХ рдЯреАрдо рд╕реЗ рд╣реВрдВ)ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди-рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рд╣реИ, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ __dirname
рдФрд░ __filename
рдореЙрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддреНрд╡рд░рд┐рдд-рдкреНрд░рд╛рд░рдВрдн рдЙрджрд╛рд╣рд░рдг рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВред
рдмрд╕ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдЯреАрдоред рдХреНрдпрд╛ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рд╣реЛрдЧреА? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдореИрдВ рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди-рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЪреВрдХ рдХрд╛ рдкреАрдЖрд░ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЗрди рдмрд┐рд▓реНрдЯрд┐рдиреЛрдВ рдХрд╛ рдордЬрд╛рдХ рди рдЙрдбрд╝рд╛рдпрд╛ рдЬрд╛рдПред
рдзрдиреНрдпрд╡рд╛рдж!
@TheLarkInn __dirname
рдФрд░ __filename
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрддрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рд░реЗрдВрдбрд░рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП HTML рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛рдирд╛ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛/рд╣рд░ рд╕рдордп рддреЛрдбрд╝рддрд╛ рд╣реИред рдЙрдирдХрд╛ рдЙрдкрд╣рд╛рд╕ рди рдХрд░рдиреЗ рд╕реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдВрдЧреА
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдПрдХ рдЕрдЬреАрдм рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдареЛрдХрд░ рдЦрд╛рдИ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рд╡рд╛рд▓рд╛ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рдерд╛ред
win.loadURL('file://${__dirname}/renderer/main.html')
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЛ рдирд┐рдореНрди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рддреНрд░реБрдЯрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рдереА, рдФрд░ рдПрдЪрдЯреАрдПрдордПрд▓ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛ред
win.loadURL('file://' + __dirname + '/renderer/main.html')
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ HTML рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдиреБрдЪрд┐рдд рдкрде рджреЗ рд░рд╣рд╛ рдерд╛, рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХреНрдпреЛрдВ?
@s-lawrence рдЕрдиреБрдЪрд┐рдд рдкрде рдХрд╛ рдХрд╛рд░рдг рд╣реИ:
win.loadURL('file://${__dirname}/renderer/main.html')
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
win.loadURL(`file://${__dirname}/renderer/main.html`)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
рдЖрд╣ рдареАрдХ рд╣реИ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЙрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдПрдХ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @milewski рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде рд░рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдЬрдм рдореБрдЭреЗ рдЙрдЪрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдХреНрд╖рд░ рдХрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреВрдВрдЧрд╛, рд╡реЗ рдПрдХ рдмрд╣реБрдд рд╕рд╛рдл рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред
@milewski , рдореБрдЭреЗ рдЖрдкрдХреЗ рджреЛ рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рджреВрд╕рд░рд╛ рд╡рд╛рд▓рд╛ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?
@ рдЬреЗрдХрд╣реЙрдХреА 10 рджреВрд╕рд░реЗ рдореЗрдВ рд╕рд┐рдВрдЧрд▓ рдХреЛрдЯреНрд╕ рдХреЗ рдмрдЬрд╛рдп рдмреИрдХрдЯрд┐рдХреНрд╕ рд╣реИрдВред рдмреИрдХрдЯрд┐рдХреНрд╕ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрдХреНрд╖рд░ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рд╣реИред рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП ${__dirname}
рднрд╛рдЧ рдХреЛ рдХрднреА рднреА __dirname
рдорд╛рди рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдпрд╣ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рдВрдкрд╛рджрдХ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, GFM рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред
рдЖрд╣ рдЧреЛрдЪрд╛ред рдЧрд┐рдЯрд╣рдм рдХреЗ рдорд╛рд░реНрдХрдбрд╛рдЙрди рдореЗрдВ рдЗрд╕реЗ рджреЗрдЦрддреЗ рд╕рдордп рдореИрдВрдиреЗ рдЙрд╕ рдЕрдВрддрд░ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдЧрдП рдЕрдВрддрд░ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рддрд╛ рд╣реВрдВред рдЭреВрдареЗ рдЕрд▓рд╛рд░реНрдо рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ ;-)
рдмрд╕ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛, рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдореЗрд░реА рдЕрдкрдиреА рдЧрд▓рддреА (рдХреИрдк рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛) рдХреЗ рдХрд╛рд░рдг рднреА рдорд┐рд▓реА рд╣реИ
рдореИрдВ pathname: path.join(__dirname, 'Views/settingsWindow.html')
рдкрд░ рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬрдм рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╕рднреА рд▓реЛрдЕрд░ рдХреЗрд╕ рдерд╛ред
рд╡реЗрдмрдкреИрдХ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕рдиреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХреАред
рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ ([email protected] рдХреЗ рд╕рд╛рде рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди@3.0.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред
рдореБрдЭреЗ рдПрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ SO рдкрд░ рдХреЗрд╡рд▓ 3 рд╡реЛрдЯреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛: рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ!
https://stackoverflow.com/questions/45041364/angular-electron-webpack-live-reloading
рд╢реВрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди-рдкрд░реЗрд╢рд╛рдиреА рд╕рдорд╛рдзрд╛рди:
-рдПрдирдкреАрдПрдо рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди-рдкреБрдирдГ рд▓реЛрдб рдХреА рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░реЗрдВ
-рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдПрдирдЬреА рд╕рд░реНрд╡ рдХрд░реЗрдВ
-in main.js win.loadURL( http://localhost:4200/index.html
);
-рдлрд┐рд░ рджреВрд╕рд░реЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ npm рд░рди рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдЪрд▓рд╛рдПрдВ
рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдирд╛ рдкреВрд░рд╛ рджрд┐рди рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЕрдВрдд рдореЗрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
https://github.com/electron-userland/electron-builder/issues/2955#issuecomment -393524832
рдЬрдм рдЖрдк package.json рдореЗрдВ "рдмрд┐рд▓реНрдб" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
"files": [
"./build/**/*",
"./index.html",
"./src/*.js"
],
рддрдм рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди-рдмрд┐рд▓реНрдбрд░ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреИрдХ рдХрд░реЗрдЧрд╛ред
рдЗрд╕рдХреЗ рд▓рд┐рдП 'рдлрд╝рд╛рдЗрд▓: //' рдЙрдкрд╕рд░реНрдЧ рдирд┐рдХрд▓рд╛ рдЬреЛ рдореБрдЭреЗ loadUrl рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛ред
рдерд╛:
win.loadUrl(path.join(__dirname, "./index.html"))
рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛:
win.loadUrl(path.join("file://",__dirname, "./index.html"))
рд╡реЗрдмрдкреИрдХ рдореБрдЭреЗ рдПрдЪрдЯреАрдПрдордПрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдХреА рд╕реНрд▓реИрд╢ рджреЛрдиреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдб рдХреЗ url
рдФрд░ path
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
const winURL = process.env.NODE_ENV === 'development'
? 'http://localhost:9080'
: url.format({
protocol: 'file',
pathname: path.join(__dirname, 'index.html'),
});
рдпрд╣ рдПрдХ рдЖрдкрджрд╛ рд╣реИ, рдореИрдВ рд╕реАрдЖрд░рдП + рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдореЗрдВ рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВ, рджреЗрд╡ рдореЛрдб рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдХреНрд╕рдИ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ред рдпрджрд┐ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдХреЗ рд╕рд╛рде рд╕реАрдЖрд░рдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╣реИрд╢ рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмреНрд░рд╛рдЙрдирд░рд╛рдЙрдЯрд░ рдХрд╛ рдирд╣реАрдВред рдХрд┐рдпрд╛ рд╣реБрдЖ!!! ЁЯШВ https://github.com/electron-userland/electron-builder/issues/2167 рджреЗрдЦреЗрдВ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
Google рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣рд╛рдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП FYI рдХрд░реЗрдВ: рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрдкрдХреЛ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рдореИрдВ рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдРрдк рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди-рдкреИрдХреЗрдЬрд░ рдХреЛ рдмрддрд╛рдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдореЗрд░реА рдмреЗрд╡рдХреВрдлреА рднрд░реА рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рд╕реАрдЦреЛ :)