diff --git a/package.json b/package.json index 6eb4cdc..ba17e62 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "vite-plugin-banner": "^0.7.1", "vite-plugin-dts": "^3.7.3", "vite-plugin-eslint": "^1.8.1", + "vite-plugin-nano": "^1.0.2", "vitest": "^1.4.0" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b8bf3df..2a2c198 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,6 +50,9 @@ devDependencies: vite-plugin-eslint: specifier: ^1.8.1 version: 1.8.1(eslint@8.57.0)(vite@5.1.6) + vite-plugin-nano: + specifier: ^1.0.2 + version: 1.0.2 vitest: specifier: ^1.4.0 version: 1.4.0(@types/node@20.11.30)(terser@5.29.2) @@ -2557,6 +2560,12 @@ packages: vite: 5.1.6(@types/node@20.11.30)(terser@5.29.2) dev: true + /vite-plugin-nano@1.0.2: + resolution: {integrity: sha512-wrYNtqeJUFoqMJclkgxgAELaoSjuu9RWUUV7oiZOw491sAJ4bMBiVll6VmF7fuL0NqyiknpS9Tc35zdH8jMr2Q==} + dependencies: + terser: 5.29.2 + dev: true + /vite@5.1.6(@types/node@20.11.30)(terser@5.29.2): resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} engines: {node: ^18.0.0 || >=20.0.0} diff --git a/vite.config.ts b/vite.config.ts index 76a6d8b..6cc916e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -7,12 +7,12 @@ import { spawn } from 'node:child_process' import { builtinModules } from 'node:module' import { defineConfig } from 'vite' // import plainText from 'vite-plugin-plain-text'; -import banner from 'vite-plugin-banner' +// import banner from 'vite-plugin-banner' import eslint from "vite-plugin-eslint"; +import nanoViteMiniDist from "vite-plugin-nano" import pkg from './package.json' // import fg from 'fast-glob'; - // prefer-const const isDevEnv = process.argv.slice(2).includes('--watch') const jsfileOutDir: string = "dist" @@ -25,8 +25,7 @@ const jsfileSrcDir='lib' // console.log(tsentryfiles) // const {log}=console - - +let bannerText = `/**\n * name: ${pkg.name}\n * version: v${pkg.version}\n * description: ${pkg.description}\n * author: ${pkg.author}\n * homepage: ${pkg.homepage}\n */` let plugins =[ isDevEnv?eslint({ lintOnStart: true, cache: false }):undefined, // allow all *.md files can be import as es module @@ -35,53 +34,17 @@ let plugins =[ name: 'generate-types', async closeBundle() { if (process.env.NODE_ENV === 'test') return - removeTypes() await generateTypes() moveTypesToDist() removeTypes() }, }, - banner( - `/**\n * name: ${pkg.name}\n * version: v${pkg.version}\n * description: ${pkg.description}\n * author: ${pkg.author}\n * homepage: ${pkg.homepage}\n */` - ) + // banner(bannerText), + nanoViteMiniDist({banner:bannerText}) ] // console.log(stdUmdName(pkg.name)) -export default defineConfig({ - build: { - // terserOptions: { - // compress: { - // drop_console: true, - // drop_debugger: true, - // }, - // }, - // minify: !isDevEnv?'terser':false, - minify:false, - outDir: jsfileOutDir, - emptyOutDir: !isDevEnv, - // target: 'node14', - lib: { - entry: [jsfileSrcDir,'main.ts'].join("/"), - name: stdUmdName(pkg.name), - formats: ['cjs', 'es','umd'], - // fileName: format => format === 'es' ? '[name].mjs' : '[name].js', - fileName: format => format === 'es' ? '[name].js' : format === 'umd' ?'[name].umd.cjs':'[name].cjs', - }, - rollupOptions: { - external: [ - 'vite', - ...builtinModules, - ...builtinModules.map(m => `node:${m}`), - ...Object.keys('dependencies' in pkg ? pkg.dependencies as object : {}), - ], - output: { - exports: 'named', - }, - }, - }, - plugins: plugins.filter(v=>v), -}) function removeTypes() { console.log(`[types] declaration remove`) @@ -121,4 +84,40 @@ function moveTypesToDist() { function stdUmdName(name:string){ return name.replace(/'@.*\/'/ig,'').replace(/-/ig,'') -} \ No newline at end of file +} + + +export default defineConfig({ + build: { + // terserOptions: { + // compress: { + // drop_console: true, + // drop_debugger: true, + // }, + // }, + // minify: !isDevEnv?'terser':false, + minify:false, + outDir: jsfileOutDir, + emptyOutDir: !isDevEnv, + // target: 'node14', + lib: { + entry: [jsfileSrcDir,'main.ts'].join("/"), + name: stdUmdName(pkg.name), + formats: ['cjs', 'es','umd'], + // fileName: format => format === 'es' ? '[name].mjs' : '[name].js', + fileName: format => format === 'es' ? '[name].js' : format === 'umd' ?'[name].umd.cjs':'[name].cjs', + }, + rollupOptions: { + external: [ + 'vite', + ...builtinModules, + ...builtinModules.map(m => `node:${m}`), + ...Object.keys('dependencies' in pkg ? pkg.dependencies as object : {}), + ], + output: { + exports: 'named', + }, + }, + }, + plugins: plugins.filter(v=>v), +}) \ No newline at end of file