0.0.2 • Published 6 months ago

vite-plugin-assets-watcher v0.0.2

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

Vite Plugin Assets Watcher

For those who need to watch static assets, keeping the target destination folder always in sync.

Motivation

In my Shopify theme projects that use vite and vite-plugin-shopify, I couldn't get vite-plugin-static-copy to work for my needs. I needed a plugin to always keep static assets up to date in the dist folder, so Shopify CLI could upload them to the store theme straight away.

I haven't thoroughly tested this plugin, so use at your own risk.

Feedbacks are welcome.

Installation

npm i -D vite-plugin-assets-watcher # npm
yarn add -D vite-plugin-assets-watcher # yarn

Example usage

// vite.config.js
import viteAssetsWatcher from 'vite-plugin-assets-watcher';

export default defineConfig({
  plugins: [
    viteAssetsWatcher({
      targets: [
        {
          src: 'static/fonts/*.{woff,woff2,ttf,otf,svg}',
          dest: 'assets',
        },
        {
          src: 'static/images/*.{jpg,jpeg,gif,png,webp}',
          dest: 'assets',
        },
        {
          src: 'static/svg/*.svg',
          dest: 'snippets',
          rename: (filePath) => filePath.replace('.svg', '.liquid'),
        },
      ],
    }),
  ],
});
{
  "name": "my-project",
  "scripts": {
    "watch": "vite build --watch"
  }
}
npm run watch
# yarn watch

Assets are simply copied after build (non-watch mode) on vite's closeBundle hook, so if you need to clear out old assets in the dist folder, you can use vite's build.emptyOutDir: true config option.

Note: you can run both vite and vite build --watch at the same time with the help of npm-run-all or concurrently, by using two terminals, or even directly in package.json, example:

{
  "name": "my-project",
  "scripts": {
    "dev": "vite & vite build --watch"
  }
}
npm run dev
# yarn dev

Acknowledgements