Skip to content

Releases: pcattori/vite-env-only

v3.0.0

24 May 16:34
8a0e4df
Compare
Choose a tag to compare

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:

    -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 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.

    {
      client?: {
        specifiers?: Array<string | RegExp>,
        files?: Array<string | RegExp>
      },
      server?: {
        specifiers?: Array<string | RegExp>,
        files?: Array<string | RegExp>
      }
    }

    👉 In your vite.config.ts, replace the envOnly plugin with the denyImports 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 the envOnlyMacros plugin to your vite.config.ts.

v2.4.1

20 May 13:32
52a5f02
Compare
Choose a tag to compare

Patch Changes

  • 4f87331: Use default import from micromatch to fix ESM build error

v2.4.0

19 May 21:03
a982ac6
Compare
Choose a tag to compare

Minor Changes

  • 25a324d: Allow globs for denyImports and denyFiles

    Using micromatch for pattern matching

v2.3.0

08 May 12:18
ec6bd2f
Compare
Choose a tag to compare

2.3.0 (2024-05-08)

Bug Fixes

  • add Vite to peer dependencies (3ebb643)
  • support transformRequest (6b8a1d6)

Features

v2.2.1

29 Mar 04:16
660619c
Compare
Choose a tag to compare

2.2.1 (2024-03-29)

Bug Fixes

  • update error message documentation URL (36053e4)

v2.2.0

01 Feb 06:18
b887558
Compare
Choose a tag to compare

2.2.0 (2024-02-01)

Features

v2.1.0

11 Jan 16:13
e3e9655
Compare
Choose a tag to compare

2.1.0 (2024-01-11)

Features

v2.0.0

09 Jan 18:27
2a0d99f
Compare
Choose a tag to compare

2.0.0 (2024-01-09)

Documentation

BREAKING CHANGES

    • Rename macros (server$ -> serverOnly$, client$ -> clientOnly$)
  • Only eliminate identifiers that have become unreferenced as a result
    of macro replacement

v1.5.0

09 Jan 03:03
21e4a41
Compare
Choose a tag to compare

1.5.0 (2024-01-09)

Features

  • error when using namespace imports (fffa8c1)

v1.4.0

09 Jan 02:43
3656941
Compare
Choose a tag to compare

1.4.0 (2024-01-09)

Features

  • error when dynamically manipulating macros (9635aab)