Security News
New Python Packaging Proposal Aims to Solve Phantom Dependency Problem with SBOMs
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
vite-plugin-hmr-public-copy
Advanced tools
Vite public to keep publicDir files synced during HMR
Note Currently, Vite does serve the publicDir files, so most people shouldn't need this plugin.
Vite has a configuration called publicDir that allows simply copying all the files contained in that directory to the build.outDir. This is provided as a utility to allow simple files that don't need to be processed by vite to be replicated in the build directory. Unfortunately, Vite doesn't create those files in the outDir during HMR, it simply serves them (they are accessible by a URL in the browser).
Sometimes, though, we need the files to exist on disk at the same place as they will be after the build, all the while keeping HMR active, so this plugin simply copies the files at dev server start and reacts to HMR file changes so they're always on disk and updated at their final destination. This allows, for example, files like svg icons to be rendered inline directly by a proxied server or language files to be loaded by a server-side framework.
npm i -D vite-plugin-hmr-public-copy
or
yarn add -D vite-plugin-hmr-public-copy
Add ViteHmrPublicCopy()
to your Vite config
import ViteHmrPublicCopy from 'vite-plugin-hmr-public-copy';
export default {
plugins: [
ViteHmrPublicCopy({
copy: true,
copyAtStart: true
})
]
}
copy
Type: Boolean | Array
Default: true
Boolean by default for simplicity and potentially allow shortcircuit by providing false. Leaving true
simply tells the plugin to watch for all publicDir files recursively.
Passing an array allows to watch multiple directories, possibly to only watch some publicDir subdirectories instead. If passing an array, the paths will not be resolved automatically, so you have to to it yourself and build the globbing string.
import { resolve } from 'path'
ViteHmrPublicCopy({
copy: [
`${resolve(__dirname, 'my/public/dir/subdirectory')}/**/*`
]
})
copyAtStart
Type: Boolean
Default: true
Tells the plugin to copy the files as soon as the HMR server starts. Pass false to only copy files on HMR update event a.k.a. when they're edited.
This plugin has been quickly whipped together for my own needs, but if you want to help improve this, all pull requests are welcome. Typescript refactoring would be appreciated.
Warning Please do not raise issues without tested pull request as those will most likely be ignored or only reviewed when I have time.
FAQs
Vite public to keep publicDir files synced during HMR
We found that vite-plugin-hmr-public-copy demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
Security News
Socket CEO Feross Aboukhadijeh discusses open source security challenges, including zero-day attacks and supply chain risks, on the Cyber Security Council podcast.
Security News
Research
Socket researchers uncover how threat actors weaponize Out-of-Band Application Security Testing (OAST) techniques across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.