Releases: pcattori/vite-env-only
v3.0.3
Patch Changes
-
2b5d238: Better dead code elimination
Upgrading to [email protected] as it contains fixes for function parameters.
v3.0.2
Patch Changes
-
69d739d: Better dead code elimination
Upgrading to [email protected] as it contains fixes for:
- Object destructuring
- Array destructuring
- Function expressions
- Arrow function expressions
v3.0.1
v3.0.0
Major Changes
-
a46e247: Rather than ship as a monolithic plugin, we've split up
vite-env-only
into two separate plugins:envOnlyMacros
anddenyImports
.
These are both named exports ofvite-env-only
; the default export has been removed.
This makes it easy to tell if you app is relying on macros, import denial, or both.Additionally, we've changed the macros themselves to come from
vite-env-only/macros
to more clearly separate
vite-env-only
plugins (for use in yourvite.config.ts
) andvite-env-only
macros (for use in your app code).Migrating macros
👉 In your
vite.config.ts
, replace the default import with theenvOnlyMacros
named import:-import envOnly from "vite-env-only" +import { envOnlyMacros } from "vite-env-only" export default { plugins: [ - envOnly(), + envOnlyMacros(), ] }
👉 In your app code, replace your macro imports to use the new
/macros
export:-import { serverOnly$ } from "vite-env-only" +import { serverOnly$ } from "vite-env-only/macros"
Migrating
denyImports
+denyFiles
The new
denyImports
plugin replaces the olddenyImports
anddenyFiles
options.
Both of these options denied imports:denyImports
denied imports with specific import specifiersdenyFiles
denied imports that resolved to specific files
Additionally, neither of these options had anything to do with macros.
But there wasn't a way to configurevite-env-only
for import denial without also implicitly setting up its macros.The new
denyImports
named export is a new plugin replaces these options.The
specifiers
option replaces the olddenyImports
option.
Matching is performed against the raw import specifier in the source code.The
files
option replaces the olddenyFiles
option.
Matching is performed against the resolved and normalized root-relative file path.{ client?: { specifiers?: Array<string | RegExp>, files?: Array<string | RegExp> }, server?: { specifiers?: Array<string | RegExp>, files?: Array<string | RegExp> } }
👉 In your
vite.config.ts
, replace theenvOnly
plugin with thedenyImports
plugin.For example:
// vite.config.ts import { defineConfig } from "vite" import envOnly from "vite-env-only" export default defineConfig({ plugins: [ envOnly({ denyImports: { client: ["fs-extra", /^node:/, "@prisma/*"], server: ["jquery"], }, denyFiles: { client: ["**/.server/*", "**/*.server.*"], }, }), ], })
Should now be written as:
// vite.config.ts import { defineConfig } from "vite" import { denyImports } from "vite-env-only" export default defineConfig({ plugins: [ denyImports({ client: { specifiers: ["fs-extra", /^node:/, "@prisma/*"], files: ["**/.server/*", "**/*.server.*"], }, server: { specifiers: ["jquery"], }, }), ], })
🚨 Macros are not enabled by the
denyImports
plugin. 🚨
If you also wanted to use macros, be sure to explicitly add theenvOnlyMacros
plugin to yourvite.config.ts
.
v2.4.1
v2.4.0
Minor Changes
-
25a324d: Allow globs for
denyImports
anddenyFiles
Using micromatch for pattern matching