Reputation: 2431
I want to create multiple libraries by vite, so I try "rollupOptions" first. Like,
import { defineConfig } from 'vite'
export default defineConfig({
build: {
rollupOptions: {
input: {
"qy-viewer": 'src/qy-viewer.ts',
"qy-swiper": 'src/qy-swiper.ts'
}
}
}
})
But this create funny results including hash-like string, like qy-swiper.f3fc032d.js
.
This is useless, so I gave up this approach.
Next I try preparing multiple vite config files. Like,
vite.qy-swiper.config.ts
import { defineConfig } from 'vite'
export default defineConfig({
build: {
lib: {
entry: 'src/qy-swiper.ts',
name: 'QySwiper',
fileName: (format) => `qy-swiper.${format}.js`
},
rollupOptions: {
}
}
})
vite.qy-viewer.config.ts
import { defineConfig } from 'vite'
export default defineConfig({
build: {
lib: {
entry: 'src/qy-viewer.ts',
name: 'QyViewer',
fileName: (format) => `qy-viewer.${format}.js`
},
rollupOptions: {
}
}
})
package.json
{
"scripts": {
"build:swiper": "tsc && vite build --config vite.qy-swiper.config.ts",
"build:viewer": "tsc && vite build --config vite.qy-viewer.config.ts",
"build:lib": "npm run build:swiper && npm run build:viewer"
},
}
This works very fine when I execute npm run build:swiper
or npm run build:viewer
independently, but once I execute npm run build:lib
, only qy-viewer is created.
Are there any way to avoid deleting files in dist directory by vite build
?
Upvotes: 27
Views: 18452
Reputation: 138276
Set build.emptyOutDir
to false
:
import { defineConfig } from 'vite'
export default defineConfig({
build: {
emptyOutDir: false,
},
⋮
})
Upvotes: 59