Releases: pcattori/vite-env-only
v3.0.3
v3.0.2
v3.0.1
v3.0.0
Major Changes
-
a46e247: Rather than ship as a monolithic plugin, we've split up
vite-env-onlyinto two separate plugins:envOnlyMacrosanddenyImports.
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/macrosto more clearly separate
vite-env-onlyplugins (for use in yourvite.config.ts) andvite-env-onlymacros (for use in your app code).Migrating macros
👉 In your
vite.config.ts, replace the default import with theenvOnlyMacrosnamed 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
/macrosexport:-import { serverOnly$ } from "vite-env-only" +import { serverOnly$ } from "vite-env-only/macros"
Migrating
denyImports+denyFilesThe new
denyImportsplugin replaces the olddenyImportsanddenyFilesoptions.
Both of these options denied imports:denyImportsdenied imports with specific import specifiersdenyFilesdenied 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-onlyfor import denial without also implicitly setting up its macros.The new
denyImportsnamed export is a new plugin replaces these options.The
specifiersoption replaces the olddenyImportsoption.
Matching is performed against the raw import specifier in the source code.The
filesoption replaces the olddenyFilesoption.
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 theenvOnlyplugin with thedenyImportsplugin.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
denyImportsplugin. 🚨
If you also wanted to use macros, be sure to explicitly add theenvOnlyMacrosplugin to yourvite.config.ts.
v2.4.1
v2.4.0
Minor Changes
-
25a324d: Allow globs for
denyImportsanddenyFilesUsing micromatch for pattern matching