@enonic/esbuild-plugin-copy-with-hash v0.2.0
esbuild-plugin-copy-with-hash
Installation
npm install --save-dev @enonic/esbuild-plugin-copy-with-hashUsage
import esbuild from 'esbuild'
import copyWithHashPlugin from 'esbuild-plugin-copy-with-hash';
await esbuild.build({
// ...
plugins: [
copyWithHashPlugin({
context: 'node_modules',
patterns: [
'react/{cjs,umd}/*.js',
'react-dom/{cjs,umd}/*.js',
]
})
],
// ...
})Usage (tsup)
import copyWithHashPlugin from 'esbuild-plugin-copy-with-hash';
export default defineConfig((options) => {
return {
// ...
esbuildPlugins: [
copyWithHashPlugin({
context: 'node_modules',
patterns: [
'react/{cjs,umd}/*.js',
'react-dom/{cjs,umd}/*.js',
]
})
],
// ...
}
}Options
options?.addHashesToFileNames
Type: Boolean
Default: true
Whether or not to add the content hashes to the filenames. This option does NOT affect the content of the manifest file.
options?.context
Type: String
Default: ''
options?.context is relative to cwd().
options?.hash
Type: function
Default: (fileBuffer: Buffer) => bigint2base(xxh3.xxh64(fileBuffer), '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ')
The default hashing algorithm is xxh3.xxh64 with uppercase base36. This will typically yield a contenthash that is 12 to 13 characters long. You can provide your own hashing algorithm, keep in mind some filesystems are case "insensitive".
options?.manifest
Type: String
Default: 'manifest.json'
The path (relative to esbuildOptions.outdir joined with options?.to) to the generated manifest file.
options.patterns
Type: (string | {
context?: string
from: string
to?: string
})[]
A list of patterns (globs) to copy.
The glob is relative to cwd() joined with options?.context and pattern?.context.
The pattern?.to is relative to esbuildOptions.outdir joined with options?.to.
import esbuild from 'esbuild'
import copyWithHashPlugin from 'esbuild-plugin-copy-with-hash';
await esbuild.build({
// ...
plugins: [
copyWithHashPlugin({
context: 'node_modules',
patterns: [
'react/{cjs,umd}/*.js',
{
context: 'react-dom',
from: '/{cjs,umd}/*.js',
to: 'react-dom/'
}
],
to: 'subdir'
})
],
// ...
})options?.to
Type: String
Default: ''
options?.to is relative to esbuildOptions.outdir.
License
MIT