diff options
Diffstat (limited to 'electron/.electron-vue')
| -rw-r--r-- | electron/.electron-vue/build.js | 132 | ||||
| -rw-r--r-- | electron/.electron-vue/dev-client.js | 40 | ||||
| -rw-r--r-- | electron/.electron-vue/dev-runner.js | 192 | ||||
| -rw-r--r-- | electron/.electron-vue/webpack.main.config.js | 72 | ||||
| -rw-r--r-- | electron/.electron-vue/webpack.renderer.config.js | 202 | ||||
| -rw-r--r-- | electron/.electron-vue/webpack.web.config.js | 161 |
6 files changed, 0 insertions, 799 deletions
diff --git a/electron/.electron-vue/build.js b/electron/.electron-vue/build.js deleted file mode 100644 index 2455fbcb..00000000 --- a/electron/.electron-vue/build.js +++ /dev/null @@ -1,132 +0,0 @@ -'use strict' - -process.env.NODE_ENV = 'production' - -const { say } = require('cfonts') -const chalk = require('chalk') -const del = require('del') -const { spawn } = require('child_process') -const webpack = require('webpack') -const Multispinner = require('multispinner') - - -const mainConfig = require('./webpack.main.config') -const rendererConfig = require('./webpack.renderer.config') -const webConfig = require('./webpack.web.config') - -const doneLog = chalk.bgGreen.white(' DONE ') + ' ' -const errorLog = chalk.bgRed.white(' ERROR ') + ' ' -const okayLog = chalk.bgBlue.white(' OKAY ') + ' ' -const isCI = process.env.CI || false - -if (process.env.BUILD_TARGET === 'clean') clean() -else if (process.env.BUILD_TARGET === 'web') web() -else build() - -function clean () { - del.sync(['build/*', '!build/icons', '!build/icons/icon.*']) - console.log(`\n${doneLog}\n`) - process.exit() -} - -function build () { - greeting() - - del.sync(['dist/electron/*', '!.gitkeep']) - - const tasks = ['main', 'renderer'] - const m = new Multispinner(tasks, { - preText: 'building', - postText: 'process' - }) - - let results = '' - - m.on('success', () => { - process.stdout.write('\x1B[2J\x1B[0f') - console.log(`\n\n${results}`) - console.log(`${okayLog}take it away ${chalk.yellow('`electron-builder`')}\n`) - process.exit() - }) - - pack(mainConfig).then(result => { - results += result + '\n\n' - m.success('main') - }).catch(err => { - m.error('main') - console.log(`\n ${errorLog}failed to build main process`) - console.error(`\n${err}\n`) - process.exit(1) - }) - - pack(rendererConfig).then(result => { - results += result + '\n\n' - m.success('renderer') - }).catch(err => { - m.error('renderer') - console.log(`\n ${errorLog}failed to build renderer process`) - console.error(`\n${err}\n`) - process.exit(1) - }) -} - -function pack (config) { - return new Promise((resolve, reject) => { - config.mode = 'production' - webpack(config, (err, stats) => { - if (err) reject(err.stack || err) - else if (stats.hasErrors()) { - let err = '' - - stats.toString({ - chunks: false, - colors: true - }) - .split(/\r?\n/) - .forEach(line => { - err += ` ${line}\n` - }) - - reject(err) - } else { - resolve(stats.toString({ - chunks: false, - colors: true - })) - } - }) - }) -} - -function web () { - del.sync(['dist/web/*', '!.gitkeep']) - webConfig.mode = 'production' - webpack(webConfig, (err, stats) => { - if (err || stats.hasErrors()) console.log(err) - - console.log(stats.toString({ - chunks: false, - colors: true - })) - - process.exit() - }) -} - -function greeting () { - const cols = process.stdout.columns - let text = '' - - if (cols > 85) text = 'lets-build' - else if (cols > 60) text = 'lets-|build' - else text = false - - if (text && !isCI) { - say(text, { - colors: ['yellow'], - font: 'simple3d', - space: false - }) - } else console.log(chalk.yellow.bold('\n lets-build')) - console.log() -}
\ No newline at end of file diff --git a/electron/.electron-vue/dev-client.js b/electron/.electron-vue/dev-client.js deleted file mode 100644 index 2913ea4b..00000000 --- a/electron/.electron-vue/dev-client.js +++ /dev/null @@ -1,40 +0,0 @@ -const hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') - -hotClient.subscribe(event => { - /** - * Reload browser when HTMLWebpackPlugin emits a new index.html - * - * Currently disabled until jantimon/html-webpack-plugin#680 is resolved. - * https://github.com/SimulatedGREG/electron-vue/issues/437 - * https://github.com/jantimon/html-webpack-plugin/issues/680 - */ - // if (event.action === 'reload') { - // window.location.reload() - // } - - /** - * Notify `mainWindow` when `main` process is compiling, - * giving notice for an expected reload of the `electron` process - */ - if (event.action === 'compiling') { - document.body.innerHTML += ` - <style> - #dev-client { - background: #4fc08d; - border-radius: 4px; - bottom: 20px; - box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3); - color: #fff; - font-family: 'Source Sans Pro', sans-serif; - left: 20px; - padding: 8px 12px; - position: absolute; - } - </style> - - <div id="dev-client"> - Compiling Main Process... - </div> - ` - } -}) diff --git a/electron/.electron-vue/dev-runner.js b/electron/.electron-vue/dev-runner.js deleted file mode 100644 index 181df411..00000000 --- a/electron/.electron-vue/dev-runner.js +++ /dev/null @@ -1,192 +0,0 @@ -'use strict' - -const chalk = require('chalk') -const electron = require('electron') -const path = require('path') -const { say } = require('cfonts') -const { spawn } = require('child_process') -const webpack = require('webpack') -const WebpackDevServer = require('webpack-dev-server') -const webpackHotMiddleware = require('webpack-hot-middleware') - -const mainConfig = require('./webpack.main.config') -const rendererConfig = require('./webpack.renderer.config') - -let electronProcess = null -let manualRestart = false -let hotMiddleware - -function logStats (proc, data) { - let log = '' - - log += chalk.yellow.bold(`┏ ${proc} Process ${new Array((19 - proc.length) + 1).join('-')}`) - log += '\n\n' - - if (typeof data === 'object') { - data.toString({ - colors: true, - chunks: false - }).split(/\r?\n/).forEach(line => { - log += ' ' + line + '\n' - }) - } else { - log += ` ${data}\n` - } - - log += '\n' + chalk.yellow.bold(`┗ ${new Array(28 + 1).join('-')}`) + '\n' - - console.log(log) -} - -function startRenderer () { - return new Promise((resolve, reject) => { - rendererConfig.entry.renderer = [path.join(__dirname, 'dev-client')].concat(rendererConfig.entry.renderer) - rendererConfig.mode = 'development' - const compiler = webpack(rendererConfig) - hotMiddleware = webpackHotMiddleware(compiler, { - log: false, - heartbeat: 2500 - }) - - compiler.hooks.compilation.tap('compilation', compilation => { - compilation.hooks.htmlWebpackPluginAfterEmit.tapAsync('html-webpack-plugin-after-emit', (data, cb) => { - hotMiddleware.publish({ action: 'reload' }) - cb() - }) - }) - - compiler.hooks.done.tap('done', stats => { - logStats('Renderer', stats) - }) - - const server = new WebpackDevServer( - compiler, - { - contentBase: path.join(__dirname, '../'), - quiet: true, - before (app, ctx) { - app.use(hotMiddleware) - ctx.middleware.waitUntilValid(() => { - resolve() - }) - } - } - ) - - server.listen(9080) - }) -} - -function startMain () { - return new Promise((resolve, reject) => { - mainConfig.entry.main = [path.join(__dirname, '../src/main/index.dev.js')].concat(mainConfig.entry.main) - mainConfig.mode = 'development' - const compiler = webpack(mainConfig) - - compiler.hooks.watchRun.tapAsync('watch-run', (compilation, done) => { - logStats('Main', chalk.white.bold('compiling...')) - hotMiddleware.publish({ action: 'compiling' }) - done() - }) - - compiler.watch({}, (err, stats) => { - if (err) { - console.log(err) - return - } - - logStats('Main', stats) - - if (electronProcess && electronProcess.kill) { - manualRestart = true - process.kill(electronProcess.pid) - electronProcess = null - startElectron() - - setTimeout(() => { - manualRestart = false - }, 5000) - } - - resolve() - }) - }) -} - -function startElectron () { - process.argv.shift(); - process.argv.shift(); - var args = [ - '--inspect=5858', - path.join(__dirname, '../dist/electron/main.js') - ].concat(process.argv) - - // detect yarn or npm and process commandline args accordingly - if (process.env.npm_execpath.endsWith('yarn.js')) { - args = args.concat(process.argv.slice(3)) - } else if (process.env.npm_execpath.endsWith('npm-cli.js')) { - args = args.concat(process.argv.slice(2)) - } - - electronProcess = spawn(electron, args) - - electronProcess.stdout.on('data', data => { - electronLog(data, 'blue') - }) - electronProcess.stderr.on('data', data => { - electronLog(data, 'red') - }) - - electronProcess.on('close', () => { - if (!manualRestart) process.exit() - }) -} - -function electronLog (data, color) { - let log = '' - data = data.toString().split(/\r?\n/) - data.forEach(line => { - log += ` ${line}\n` - }) - if (/[0-9A-z]+/.test(log)) { - console.log( - chalk[color].bold('┏ Electron -------------------') + - '\n\n' + - log + - chalk[color].bold('┗ ----------------------------') + - '\n' - ) - } -} - -function greeting () { - const cols = process.stdout.columns - let text = '' - - if (cols > 104) text = 'electron-vue' - else if (cols > 76) text = 'electron-|vue' - else text = false - - if (text) { - say(text, { - colors: ['yellow'], - font: 'simple3d', - space: false - }) - } else console.log(chalk.yellow.bold('\n electron-vue')) - console.log(chalk.blue(' getting ready...') + '\n') -} - -function init () { - greeting() - - Promise.all([startRenderer(), startMain()]) - .then(() => { - startElectron() - }) - .catch(err => { - console.error(err) - }) -} - -init() diff --git a/electron/.electron-vue/webpack.main.config.js b/electron/.electron-vue/webpack.main.config.js deleted file mode 100644 index cfdbdf22..00000000 --- a/electron/.electron-vue/webpack.main.config.js +++ /dev/null @@ -1,72 +0,0 @@ -'use strict' - -process.env.BABEL_ENV = 'main' - -const path = require('path') -const { dependencies } = require('../package.json') -const webpack = require('webpack') - -const BabiliWebpackPlugin = require('babili-webpack-plugin') - -let mainConfig = { - entry: { - main: path.join(__dirname, '../src/main/index.js') - }, - externals: [ - ...Object.keys(dependencies || {}) - ], - module: { - rules: [ - { - test: /\.js$/, - use: 'babel-loader', - exclude: /node_modules/ - }, - { - test: /\.node$/, - use: 'node-loader' - } - ] - }, - node: { - __dirname: process.env.NODE_ENV !== 'production', - __filename: process.env.NODE_ENV !== 'production' - }, - output: { - filename: '[name].js', - libraryTarget: 'commonjs2', - path: path.join(__dirname, '../dist/electron') - }, - plugins: [ - new webpack.NoEmitOnErrorsPlugin() - ], - resolve: { - extensions: ['.js', '.json', '.node'] - }, - target: 'electron-main' -} - -/** - * Adjust mainConfig for development settings - */ -if (process.env.NODE_ENV !== 'production') { - mainConfig.plugins.push( - new webpack.DefinePlugin({ - '__static': `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"` - }) - ) -} - -/** - * Adjust mainConfig for production settings - */ -if (process.env.NODE_ENV === 'production') { - mainConfig.plugins.push( - new BabiliWebpackPlugin(), - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': '"production"' - }) - ) -} - -module.exports = mainConfig diff --git a/electron/.electron-vue/webpack.renderer.config.js b/electron/.electron-vue/webpack.renderer.config.js deleted file mode 100644 index 8a848141..00000000 --- a/electron/.electron-vue/webpack.renderer.config.js +++ /dev/null @@ -1,202 +0,0 @@ -'use strict' - -process.env.BABEL_ENV = 'renderer' - -const path = require('path') -const { dependencies } = require('../package.json') -const webpack = require('webpack') - -const BabiliWebpackPlugin = require('babili-webpack-plugin') -const CopyWebpackPlugin = require('copy-webpack-plugin') -const MiniCssExtractPlugin = require('mini-css-extract-plugin') -const HtmlWebpackPlugin = require('html-webpack-plugin') -const { VueLoaderPlugin } = require('vue-loader') - -/** - * List of node_modules to include in webpack bundle - * - * Required for specific packages like Vue UI libraries - * that provide pure *.vue files that need compiling - * https://simulatedgreg.gitbooks.io/electron-vue/content/en/webpack-configurations.html#white-listing-externals - */ -// 'vue-slider-component' needed here due to this issue: -// https://github.com/SimulatedGREG/electron-vue/issues/725 -let whiteListedModules = ['vue', 'vue-slider-component', 'vuetify'] - -let rendererConfig = { - devtool: '#cheap-module-eval-source-map', - entry: { - renderer: path.join(__dirname, '../src/renderer/main.js') - }, - externals: [ - ...Object.keys(dependencies || {}).filter(d => !whiteListedModules.includes(d)) - ], - module: { - rules: [ - { - test: /\.less$/, - use: ['vue-style-loader', 'css-loader', 'less-loader'] - }, - { - test: /\.css$/, - use: ['vue-style-loader', 'css-loader'] - }, - { - test: /\.html$/, - use: 'vue-html-loader' - }, - { - test: /\.js$/, - use: 'babel-loader', - exclude: /node_modules/ - }, - { - test: /\.node$/, - use: 'node-loader' - }, - { - test: /\.vue$/, - use: { - loader: 'vue-loader', - options: { - extractCSS: process.env.NODE_ENV === 'production', - loaders: { - sass: 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1', - scss: 'vue-style-loader!css-loader!sass-loader', - less: 'vue-style-loader!css-loader!less-loader' - } - } - } - }, - { - test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, - use: { - loader: 'url-loader', - query: { - limit: 10000, - name: 'imgs/[name]--[folder].[ext]' - } - } - }, - { - test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, - loader: 'url-loader', - options: { - limit: 10000, - name: 'media/[name]--[folder].[ext]' - } - }, - { - test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, - use: { - loader: 'url-loader', - query: { - limit: 10000, - name: 'fonts/[name]--[folder].[ext]' - } - } - }, - { - test: /\.s(c|a)ss$/, - use: [ - 'vue-style-loader', - 'css-loader', - { - loader: 'sass-loader', - // Requires sass-loader@^8.0.0 - options: { - implementation: require('sass'), - sassOptions: { - indentedSyntax: true // optional - }, - }, - }, - ], - } - ] - }, - node: { - __dirname: process.env.NODE_ENV !== 'production', - __filename: process.env.NODE_ENV !== 'production' - }, - plugins: [ - new VueLoaderPlugin(), - new MiniCssExtractPlugin({filename: 'styles.css'}), - new HtmlWebpackPlugin({ - filename: 'index.html', - template: path.resolve(__dirname, '../src/index.ejs'), - templateParameters(compilation, assets, options) { - return { - compilation: compilation, - webpack: compilation.getStats().toJson(), - webpackConfig: compilation.options, - htmlWebpackPlugin: { - files: assets, - options: options - }, - process - } - }, - minify: { - collapseWhitespace: true, - removeAttributeQuotes: true, - removeComments: true - }, - nodeModules: process.env.NODE_ENV !== 'production' - ? path.resolve(__dirname, '../node_modules') - : false - }), - new webpack.HotModuleReplacementPlugin(), - new webpack.NoEmitOnErrorsPlugin() - ], - output: { - filename: '[name].js', - libraryTarget: 'commonjs2', - path: path.join(__dirname, '../dist/electron') - }, - resolve: { - alias: { - '@': path.join(__dirname, '../src/renderer'), - 'vue$': 'vue/dist/vue.esm.js' - }, - extensions: ['.js', '.vue', '.json', '.css', '.node'] - }, - target: 'electron-renderer' -} - -/** - * Adjust rendererConfig for development settings - */ -if (process.env.NODE_ENV !== 'production') { - rendererConfig.plugins.push( - new webpack.DefinePlugin({ - '__static': `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"` - }) - ) -} - -/** - * Adjust rendererConfig for production settings - */ -if (process.env.NODE_ENV === 'production') { - rendererConfig.devtool = '' - - rendererConfig.plugins.push( - new BabiliWebpackPlugin(), - new CopyWebpackPlugin([ - { - from: path.join(__dirname, '../static'), - to: path.join(__dirname, '../dist/electron/static'), - ignore: ['.*'] - } - ]), - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': '"production"' - }), - new webpack.LoaderOptionsPlugin({ - minimize: true - }) - ) -} - -module.exports = rendererConfig diff --git a/electron/.electron-vue/webpack.web.config.js b/electron/.electron-vue/webpack.web.config.js deleted file mode 100644 index c19e42c5..00000000 --- a/electron/.electron-vue/webpack.web.config.js +++ /dev/null @@ -1,161 +0,0 @@ -'use strict' - -process.env.BABEL_ENV = 'web' - -const path = require('path') -const webpack = require('webpack') - -const BabiliWebpackPlugin = require('babili-webpack-plugin') -const CopyWebpackPlugin = require('copy-webpack-plugin') -const MiniCssExtractPlugin = require('mini-css-extract-plugin') -const HtmlWebpackPlugin = require('html-webpack-plugin') -const { VueLoaderPlugin } = require('vue-loader') - -let webConfig = { - devtool: '#cheap-module-eval-source-map', - entry: { - web: path.join(__dirname, '../src/renderer/main.js') - }, - module: { - rules: [ - { - test: /\.less$/, - use: ['vue-style-loader', 'css-loader', 'less-loader'] - }, - { - test: /\.css$/, - use: ['vue-style-loader', 'css-loader'] - }, - { - test: /\.html$/, - use: 'vue-html-loader' - }, - { - test: /\.js$/, - use: 'babel-loader', - include: [ path.resolve(__dirname, '../src/renderer') ], - exclude: /node_modules/ - }, - { - test: /\.vue$/, - use: { - loader: 'vue-loader', - options: { - extractCSS: true, - loaders: { - sass: 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1', - scss: 'vue-style-loader!css-loader!sass-loader', - less: 'vue-style-loader!css-loader!less-loader' - } - } - } - }, - { - test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, - use: { - loader: 'url-loader', - query: { - limit: 10000, - name: 'imgs/[name].[ext]' - } - } - }, - { - test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, - use: { - loader: 'url-loader', - query: { - limit: 10000, - name: 'fonts/[name].[ext]' - } - } - }, - { - test: /\.s(c|a)ss$/, - use: [ - 'vue-style-loader', - 'css-loader', - { - loader: 'sass-loader', - // Requires sass-loader@^8.0.0 - options: { - implementation: require('sass'), - sassOptions: { - indentedSyntax: true // optional - }, - }, - }, - ], - }, - ] - }, - plugins: [ - new VueLoaderPlugin(), - new MiniCssExtractPlugin({filename: 'styles.css'}), - new HtmlWebpackPlugin({ - filename: 'index.html', - template: path.resolve(__dirname, '../src/index.ejs'), - templateParameters(compilation, assets, options) { - return { - compilation: compilation, - webpack: compilation.getStats().toJson(), - webpackConfig: compilation.options, - htmlWebpackPlugin: { - files: assets, - options: options - }, - process - } - }, - minify: { - collapseWhitespace: true, - removeAttributeQuotes: true, - removeComments: true - }, - nodeModules: false - }), - new webpack.DefinePlugin({ - 'process.env.IS_WEB': 'true' - }), - new webpack.HotModuleReplacementPlugin(), - new webpack.NoEmitOnErrorsPlugin() - ], - output: { - filename: '[name].js', - path: path.join(__dirname, '../dist/web') - }, - resolve: { - alias: { - '@': path.join(__dirname, '../src/renderer'), - 'vue$': 'vue/dist/vue.esm.js' - }, - extensions: ['.js', '.vue', '.json', '.css'] - }, - target: 'web' -} - -/** - * Adjust webConfig for production settings - */ -if (process.env.NODE_ENV === 'production') { - webConfig.devtool = '' - - webConfig.plugins.push( - new BabiliWebpackPlugin(), - new CopyWebpackPlugin([ - { - from: path.join(__dirname, '../static'), - to: path.join(__dirname, '../dist/web/static'), - ignore: ['.*'] - } - ]), - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': '"production"' - }), - new webpack.LoaderOptionsPlugin({ - minimize: true - }) - ) -} - -module.exports = webConfig |
