diff --git a/.changeset/v3.md b/.changeset/v3.md deleted file mode 100644 index 3c51d19..0000000 --- a/.changeset/v3.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -"vite-env-only": major ---- - -Rather than ship as a monolithic plugin, we've split up `vite-env-only` into two separate plugins: `envOnlyMacros` and `denyImports`. -These are both named exports of `vite-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 your `vite.config.ts`) and `vite-env-only` macros (for use in your app code). - -## Migrating macros - -👉 In your `vite.config.ts`, replace the default import with the `envOnlyMacros` named import: - -```diff --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: - -```diff --import { serverOnly$ } from "vite-env-only" -+import { serverOnly$ } from "vite-env-only/macros" -``` - -## Migrating `denyImports` + `denyFiles` - -The new `denyImports` plugin replaces the old `denyImports` and `denyFiles` options. -Both of these options denied imports: - -- `denyImports` denied imports with specific _import specifiers_ -- `denyFiles` 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 configure `vite-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 old `denyImports` option. -Matching is performed against the raw import specifier in the source code. - -The `files` option replaces the old `denyFiles` option. -Matching is performed against the resolved and normalized root-relative file path. - -```ts -{ - client?: { - specifiers?: Array, - files?: Array - }, - server?: { - specifiers?: Array, - files?: Array - } -} -``` - -👉 In your `vite.config.ts`, replace the `envOnly` plugin with the `denyImports` plugin. - -For example: - -```ts -// 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: - -```ts -// 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 the `envOnlyMacros` plugin to your `vite.config.ts`. diff --git a/CHANGELOG.md b/CHANGELOG.md index a5c63d7..73f5828 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,120 @@ # vite-env-only +## 3.0.0 + +### Major Changes + +- a46e247: Rather than ship as a monolithic plugin, we've split up `vite-env-only` into two separate plugins: `envOnlyMacros` and `denyImports`. + These are both named exports of `vite-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 your `vite.config.ts`) and `vite-env-only` macros (for use in your app code). + + ## Migrating macros + + 👉 In your `vite.config.ts`, replace the default import with the `envOnlyMacros` named import: + + ```diff + -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: + + ```diff + -import { serverOnly$ } from "vite-env-only" + +import { serverOnly$ } from "vite-env-only/macros" + ``` + + ## Migrating `denyImports` + `denyFiles` + + The new `denyImports` plugin replaces the old `denyImports` and `denyFiles` options. + Both of these options denied imports: + + - `denyImports` denied imports with specific _import specifiers_ + - `denyFiles` 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 configure `vite-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 old `denyImports` option. + Matching is performed against the raw import specifier in the source code. + + The `files` option replaces the old `denyFiles` option. + Matching is performed against the resolved and normalized root-relative file path. + + ```ts + { + client?: { + specifiers?: Array, + files?: Array + }, + server?: { + specifiers?: Array, + files?: Array + } + } + ``` + + 👉 In your `vite.config.ts`, replace the `envOnly` plugin with the `denyImports` plugin. + + For example: + + ```ts + // 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: + + ```ts + // 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 the `envOnlyMacros` plugin to your `vite.config.ts`. + ## 2.4.1 ### Patch Changes diff --git a/package.json b/package.json index 912418e..6d845ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vite-env-only", - "version": "2.4.1", + "version": "3.0.0", "description": "Vite plugins for isolating server-only and client-only code", "keywords": [ "vite-plugin",