Select Git revision
vite.config.js

Volker Schukai authored
vite.config.js 3.31 KiB
// vite.config.js
import {basename, resolve} from 'path'
import {defineConfig} from 'vite'
import banner from 'vite-plugin-banner'
import pkg from '../package.json'
import cssnano from 'cssnano';
import normalizeCss from 'postcss-normalize';
import postcssFluid from 'postcss-fluid';
import importCss from 'postcss-import';
import postcssNesting from 'postcss-nesting';
import postcssFor from 'postcss-for';
import autoprefixer from 'autoprefixer';
import postcssMixins from 'postcss-mixins';
import postcssResponsiveType from 'postcss-responsive-type';
import {directoryPlugin} from "vite-plugin-list-directory-contents";
import mkcert from 'vite-plugin-mkcert'
import {ViteMinifyPlugin} from 'vite-plugin-minify'
import {globSync} from 'glob'
import {exec} from "child_process";
let files = {};
const source = resolve(__dirname, '')
const dist = resolve(__dirname, '')
globSync(source + '/**/*.html', {
ignore: [
'**/resource/**'
]
}).forEach((file) => {
let lang = file.split('/').slice(-2)[0]
let key = lang + "/" + basename(file).replace('.html', '')
files[key] = file;
})
const scriptDir = resolve(__dirname, '../');
function createStyleSheetPlugin() {
return {
name: 'buildStart',
buildStart() {
console.log('buildStart')
exec('pnpm run -C ' + scriptDir + " build-style", (err, stdout, stderr) => {
if (err) {
//some err occurred
console.error(err)
}
});
},
async transform(raw, id, options) {
//console.log(id, options,raw)
}
}
}
export default defineConfig({
clearScreen: false,
appType: 'mpa',
root: source,
base: "/",
build: {
outDir: dist,
emptyOutDir: true,
assetsDir: "asset",
rollupOptions: {
input: files,
output: {
globals: {
},
},
},
comments: false,
minify: 'esbuild',
},
esbuild: {
minifyIdentifiers: true,
minifySyntax: true,
minifyWhitespace: true,
target: 'es2015',
legalComments: 'none'
},
server: {
port: 8070,
host: "localhost.schukai.net",
https: true,
debug: true
},
plugins: [
banner(
`/**\n * name: ${pkg.name}\n * version: v${pkg.version}\n * description: ${pkg.description}\n * author: ${pkg.author}\n * homepage: ${pkg.homepage}\n */`
),
mkcert({}),
ViteMinifyPlugin(),
directoryPlugin({
baseDir: __dirname
}),
createStyleSheetPlugin()
],
css: {
postcss: {
plugins: [
importCss(),
normalizeCss,
postcssMixins,
postcssNesting(),
postcssFor,
postcssFluid({
// Defaults:
min: '320px', // Min media size
max: '1800px', // Max media size
functionName: 'fluid', // function name, may be anything
}), // https://github.com/notiv-nt/postcss-fluid
autoprefixer,
cssnano,
postcssResponsiveType
]
}
}
})