1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /**
- * electron 打包
- */
- const path = require('path');
- const rollup = require('rollup');
- const argv = require('minimist')(process.argv.slice(2));
- const chalk = require('chalk');
- const ora = require('ora');
- const waitOn = require('wait-on');
- const electron = require('electron-connect').server.create({ stopOnClose: true });
- require('dotenv').config({ path: path.join(__dirname, '../.env') });
- const options = require('./rollup.config');
- const net = require('net');
- const { URL } = require('url');
- const opt = options(argv.env);
- const TAG = '[script/build.js]';
- const spinner = ora(`${TAG} Electron build...`);
- const watchFunc = function () {
- // once here, all resources are available
- const watcher = rollup.watch(opt);
- watcher.on('change', (filename) => {
- const log = chalk.green(`change -- ${filename}`);
- console.log(TAG, log);
- });
- watcher.on('event', (ev) => {
- if (ev.code === 'END') {
- // init-未启动、started-第一次启动、restarted-重新启动
- electron.electronState === 'init' ? electron.start() : electron.restart();
- } else if (ev.code === 'ERROR') {
- console.log(ev.error);
- }
- });
- };
- const resource = `http://localhost:${process.env.PORT}/index.html`; // 因为 vite 不会重定向到 index.html,所以直接写 index.html 路由。
- if (argv.watch) {
- waitOn(
- {
- resources: [resource],
- timeout: 5000,
- },
- (err) => {
- if (err) {
- const { port, hostname } = new URL(resource);
- const serverSocket = net.connect(port || 80, hostname, () => {
- watchFunc();
- });
- serverSocket.on('error', (e) => {
- console.log(err);
- console.log(e);
- process.exit(1);
- });
- } else {
- watchFunc();
- }
- }
- );
- } else {
- spinner.start();
- rollup
- .rollup(opt)
- .then((build) => {
- spinner.stop();
- console.log(TAG, chalk.green('Electron build successed.'));
- build.write(opt.output);
- })
- .catch((error) => {
- spinner.stop();
- console.log(`\n${TAG} ${chalk.red('构建报错')}\n`, error, '\n');
- });
- }
|