layui/script/build.es.ts

64 lines
1.5 KiB
TypeScript
Raw Normal View History

2022-01-27 16:18:16 +08:00
import { UserConfigExport } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
import * as fs from 'fs'
const inputDir = resolve(process.cwd(), './src/component')
2022-01-27 16:18:16 +08:00
const inputsArray = fs.readdirSync(inputDir).filter((name) => {
const componentDir = resolve(inputDir, name)
const isDir = fs.lstatSync(componentDir).isDirectory()
return isDir && fs.readdirSync(componentDir).includes('index.ts')
})
const inputs = inputsArray.reduce((backObj, pkgName) => {
backObj[pkgName] = resolve(process.cwd(), `./src/component/${pkgName}/index.ts`)
2022-01-27 16:18:16 +08:00
return backObj
}, {})
inputs['index'] = resolve(process.cwd(), './src/index.ts')
2022-01-27 16:18:16 +08:00
export default (): UserConfigExport => {
return {
publicDir: false,
resolve: {
alias: [
{
find: '@',
replacement: resolve(process.cwd(), './')
2022-01-27 16:18:16 +08:00
}
]
},
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true
}
},
postcss: {}
},
plugins: [vue()],
build: {
cssCodeSplit: true,
emptyOutDir: true,
outDir: 'es',
lib: {
entry: './index.ts',
formats: ['es']
},
rollupOptions: {
input: inputs,
output: {
globals: {
vue: 'Vue'
},
entryFileNames: ({ name }) => {
return name === 'index' ? 'index.js' : '[name]/index.js'
},
assetFileNames: '[name]/index.css'
},
external: ['vue', 'vue-router']
}
}
}
}