rollup-plugin-copy for Vite with dev server support.
[!NOTE] Before you use this plugin, consider using public directory or
importin JavaScript. In most cases, these will work.
npm i -D vite-plugin-static-copy # yarn add -D vite-plugin-static-copy
Add viteStaticCopy plugin to vite.config.js / vite.config.ts.
// vite.config.js / vite.config.ts
import { viteStaticCopy } from 'vite-plugin-static-copy'
export default {
plugins: [
viteStaticCopy({
targets: [
{
src: 'bin/example.wasm',
dest: 'wasm-files',
rename: { stripBase: 1 }, // strips `bin/`
},
],
}),
],
}
For example, if you use the config above, you will be able to fetch bin/example.wasm with fetch('/wasm-files/example.wasm').
So the file will be copied to dist/wasm-files/example.wasm.
[!WARNING]
If you are using Windows, make sure to use
normalizePathafter doingpath.resolveor else.\is a escape charactor intinyglobbyand you should use/.import { normalizePath } from 'vite' import path from 'node:path' normalizePath(path.resolve(__dirname, './foo')) // C:/project/foo // instead of path.resolve(__dirname, './foo') // C:\project\foo
See options.ts.
You can enable detailed logging by setting the DEBUG environment variable:
DEBUG=vite:plugin-static-copy npm run dev
When debug logging is enabled, the plugin will output which file is served from each URL.
rollup-plugin-copyrollup-plugin-copy on buildStart hook.
dest is relative to build.outDir.
build.outDir, you could use rollup-plugin-copy instead. Because that does not require dev server support.tinyglobby is used instead of globby.
tinyglobby is used inside vite.transform could return null as a way to tell the plugin not to copy the file, this is similar to the CopyWebpackPlugin#filter option, but it expects transform to return the original content in case you want it to be copied.transform can optionally be an object, with a handler property (with the same signature of the rollup-plugin-copy transform option) and an encoding property (BufferEncoding | 'buffer') that will be used to read the file content so that the handler's content argument will reflect the correct encoding (could be Buffer);flatten: false in rollup-plugin-copy). Use rename: { stripBase: true } for flat copy.TypeScript
100.0%
rollup-plugin-copy for Vite with dev server support.
[!NOTE] Before you use this plugin, consider using public directory or
importin JavaScript. In most cases, these will work.
npm i -D vite-plugin-static-copy # yarn add -D vite-plugin-static-copy
Add viteStaticCopy plugin to vite.config.js / vite.config.ts.
// vite.config.js / vite.config.ts
import { viteStaticCopy } from 'vite-plugin-static-copy'
export default {
plugins: [
viteStaticCopy({
targets: [
{
src: 'bin/example.wasm',
dest: 'wasm-files',
rename: { stripBase: 1 }, // strips `bin/`
},
],
}),
],
}
For example, if you use the config above, you will be able to fetch bin/example.wasm with fetch('/wasm-files/example.wasm').
So the file will be copied to dist/wasm-files/example.wasm.
[!WARNING]
If you are using Windows, make sure to use
normalizePathafter doingpath.resolveor else.\is a escape charactor intinyglobbyand you should use/.import { normalizePath } from 'vite' import path from 'node:path' normalizePath(path.resolve(__dirname, './foo')) // C:/project/foo // instead of path.resolve(__dirname, './foo') // C:\project\foo
See options.ts.
You can enable detailed logging by setting the DEBUG environment variable:
DEBUG=vite:plugin-static-copy npm run dev
When debug logging is enabled, the plugin will output which file is served from each URL.
rollup-plugin-copyrollup-plugin-copy on buildStart hook.
dest is relative to build.outDir.
build.outDir, you could use rollup-plugin-copy instead. Because that does not require dev server support.tinyglobby is used instead of globby.
tinyglobby is used inside vite.transform could return null as a way to tell the plugin not to copy the file, this is similar to the CopyWebpackPlugin#filter option, but it expects transform to return the original content in case you want it to be copied.transform can optionally be an object, with a handler property (with the same signature of the rollup-plugin-copy transform option) and an encoding property (BufferEncoding | 'buffer') that will be used to read the file content so that the handler's content argument will reflect the correct encoding (could be Buffer);flatten: false in rollup-plugin-copy). Use rename: { stripBase: true } for flat copy.TypeScript
100.0%