mirror of https://github.com/mue/mue.git
82 lines
2.5 KiB
JavaScript
82 lines
2.5 KiB
JavaScript
import { defineConfig } from 'vite';
|
|
import react from '@vitejs/plugin-react-swc';
|
|
import path from 'path';
|
|
import fs from 'fs';
|
|
import ADMZip from 'adm-zip';
|
|
import * as pkg from './package.json';
|
|
|
|
const isProd = process.env.NODE_ENV === 'production';
|
|
|
|
const prepareBuilds = () => ({
|
|
name: 'prepareBuilds',
|
|
buildEnd() {
|
|
if (isProd) {
|
|
// chrome
|
|
fs.mkdirSync(path.resolve(__dirname, './build/chrome'), { recursive: true });
|
|
fs.copyFileSync(
|
|
path.resolve(__dirname, './manifest/chrome.json'),
|
|
path.resolve(__dirname, './build/chrome/manifest.json'),
|
|
);
|
|
fs.copyFileSync(
|
|
path.resolve(__dirname, './manifest/background-chrome.js'),
|
|
path.resolve(__dirname, './build/chrome/background.js'),
|
|
);
|
|
fs.cpSync(
|
|
path.resolve(__dirname, './manifest/_locales'),
|
|
path.resolve(__dirname, './build/chrome/_locales'),
|
|
{
|
|
recursive: true,
|
|
},
|
|
);
|
|
fs.cpSync(path.resolve(__dirname, './dist'), path.resolve(__dirname, './build/chrome/'), {
|
|
recursive: true,
|
|
});
|
|
|
|
// firefox
|
|
fs.mkdirSync(path.resolve(__dirname, './build/firefox'), { recursive: true });
|
|
fs.copyFileSync(
|
|
path.resolve(__dirname, './manifest/firefox.json'),
|
|
path.resolve(__dirname, './build/firefox/manifest.json'),
|
|
);
|
|
fs.copyFileSync(
|
|
path.resolve(__dirname, './manifest/background-firefox.js'),
|
|
path.resolve(__dirname, './build/firefox/background.js'),
|
|
);
|
|
fs.cpSync(path.resolve(__dirname, './dist'), path.resolve(__dirname, './build/firefox/'), {
|
|
recursive: true,
|
|
});
|
|
|
|
// create zip
|
|
const zip = new ADMZip();
|
|
zip.addLocalFolder(path.resolve(__dirname, './build/chrome'));
|
|
zip.writeZip(path.resolve(__dirname, `./build/chrome-${pkg.version}.zip`));
|
|
|
|
const zip2 = new ADMZip();
|
|
zip2.addLocalFolder(path.resolve(__dirname, './build/firefox'));
|
|
zip2.writeZip(path.resolve(__dirname, `./build/firefox-${pkg.version}.zip`));
|
|
}
|
|
},
|
|
});
|
|
|
|
export default defineConfig({
|
|
plugins: [react(), prepareBuilds()],
|
|
server: {
|
|
hmr: {
|
|
protocol: 'ws',
|
|
host: 'localhost',
|
|
},
|
|
},
|
|
build: {
|
|
minify: isProd,
|
|
},
|
|
resolve: {
|
|
extensions: ['.js', '.jsx'],
|
|
alias: {
|
|
components: path.resolve(__dirname, './src/components'),
|
|
modules: path.resolve(__dirname, './src/modules'),
|
|
translations: path.resolve(__dirname, './src/translations'),
|
|
scss: path.resolve(__dirname, './src/scss'),
|
|
},
|
|
},
|
|
});
|