rollup-plugin-copy
for Vite with dev server support.
[!NOTE] Before you use this plugin, consider using public directory or
import
in 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'
}
]
})
]
}
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
normalizePath
after doingpath.resolve
or else.\
is a escape charactor infast-glob
and 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
fast-glob
documentation about this for more details.
See options.ts.
rollup-plugin-copy
rollup-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.fast-glob
is used instead of globby
.
fast-glob
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);structured: true
preserves the directory structure. This is similar to flatten: false
in rollup-plugin-copy
, but it covers more edge cases.