Skip to content

Commit

Permalink
Merge pull request #37 from pcattori/changeset-release/main
Browse files Browse the repository at this point in the history
Release
  • Loading branch information
pcattori authored May 24, 2024
2 parents ae935a4 + 513852e commit 8a0e4df
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 115 deletions.
114 changes: 0 additions & 114 deletions .changeset/v3.md

This file was deleted.

115 changes: 115 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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<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:

```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
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down

0 comments on commit 8a0e4df

Please sign in to comment.