vite-plugin-static-copy
TypeScript icon, indicating that this package has built-in type declarations

2.3.1 • Public • Published

vite-plugin-static-copy

npm version CI MIT License

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.

Install

npm i -D vite-plugin-static-copy # yarn add -D vite-plugin-static-copy

Usage

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 doing path.resolve or else. \ is a escape charactor in fast-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.

Options

See options.ts.

Differences with rollup-plugin-copy

  • Faster dev server start-up than using rollup-plugin-copy on buildStart hook.
    • Files are not copied and served directly from the server during dev to reduce start-up time.
  • dest is relative to build.outDir.
    • If you are going to copy files outside build.outDir, you could use rollup-plugin-copy instead. Because that does not require dev server support.
  • fast-glob is used instead of globby.
    • Because 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.

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
2.3.1
94,522latest

Version History

VersionDownloads (Last 7 Days)Published
2.3.1
94,522
2.3.0
64,696
2.2.0
154,546
2.1.0
10,550
2.0.0
10,844
1.0.6
78,061
1.0.5
8,899
1.0.43,421
1.0.3919
1.0.23,988
1.0.112,706
1.0.010,091
0.17.125,393
0.17.011,554
0.16.09,816
0.15.07,289
0.14.01,496
0.13.115,096
0.13.01,517
0.12.01,160
0.11.175
0.11.07
0.10.00
0.9.01,181
0.8.042
0.7.01,803
0.6.180
0.6.021
0.5.1245
0.5.0164
0.4.41,683
0.4.32
0.4.24
0.4.13
0.4.03
0.3.19
0.3.04
0.2.02
0.1.028

Package Sidebar

Install

npm i vite-plugin-static-copy

Weekly Downloads

531,920

Version

2.3.1

License

MIT

Unpacked Size

43.9 kB

Total Files

5

Last publish

Collaborators

  • sapphi-red