Skip to content
Snippets Groups Projects
Select Git revision
  • 58fbb4b41495b44996b097736d2c2ef208d710eb
  • master default protected
  • 1.31
  • 4.38.3
  • 4.38.2
  • 4.38.1
  • 4.38.0
  • 4.37.2
  • 4.37.1
  • 4.37.0
  • 4.36.0
  • 4.35.0
  • 4.34.1
  • 4.34.0
  • 4.33.1
  • 4.33.0
  • 4.32.2
  • 4.32.1
  • 4.32.0
  • 4.31.0
  • 4.30.1
  • 4.30.0
  • 4.29.1
23 results

vite.config.js

Blame
  • 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
                ]
            }
        }
    
    
    })