Skip to content

chore: migrate from Yarn to pnpm as the package manager#622

Merged
cycleccc merged 7 commits into
masterfrom
features/checkout-pnpm
Jul 1, 2025
Merged

chore: migrate from Yarn to pnpm as the package manager#622
cycleccc merged 7 commits into
masterfrom
features/checkout-pnpm

Conversation

@cycleccc

@cycleccc cycleccc commented Jun 30, 2025

Copy link
Copy Markdown
Collaborator
  • 更新 .gitignore,添加 pnpm 相关文件
  • 修改 package.json,设置 packageManager 为 pnpm,并更新相关脚本
  • 更新 GitHub Actions 工作流,替换 Yarn 为 pnpm
  • 更新开发文档,反映 pnpm 的使用
  • 更新 editor 和 frontend 示例的 package.json,使用 pnpm 进行依赖管理

Changes Overview

Implementation Approach

Testing Done

Verification Steps

Additional Notes

Checklist

  • I have created a changeset for this PR if necessary.
  • My changes do not break the library.
  • I have added tests where applicable.
  • I have followed the project guidelines.
  • I have fixed any lint issues.

Related Issues

Summary by CodeRabbit

  • Chores

    • Switched the project’s package manager from Yarn to pnpm across all workflows, scripts, and documentation.
    • Updated configuration files, scripts, and pre-commit hooks to use pnpm commands.
    • Added pnpm-specific configuration and workspace files.
    • Updated .gitignore to include pnpm-related files.
    • Upgraded and added relevant dependencies for compatibility with pnpm.
  • Documentation

    • Revised developer and testing guides to reflect pnpm usage instead of Yarn.

- 更新 .gitignore,添加 pnpm 相关文件
- 修改 package.json,设置 packageManager 为 pnpm,并更新相关脚本
- 更新 GitHub Actions 工作流,替换 Yarn 为 pnpm
- 更新开发文档,反映 pnpm 的使用
- 更新 editor 和 frontend 示例的 package.json,使用 pnpm 进行依赖管理
@changeset-bot

changeset-bot Bot commented Jun 30, 2025

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 21a3566

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 7 packages
Name Type
@wangeditor-next/editor Patch
@wangeditor-next/plugin-float-image Patch
@wangeditor-next/plugin-formula Patch
@wangeditor-next/plugin-link-card Patch
@wangeditor-next/plugin-markdown Patch
@wangeditor-next/plugin-mention Patch
@wangeditor-next/yjs-for-react Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Jun 30, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

The project has transitioned its package management system from Yarn to pnpm. All workflow files, scripts, documentation, and configuration have been updated to use pnpm commands and conventions. New pnpm-specific configuration files were added, and references to Yarn were removed or replaced throughout the codebase, documentation, and continuous integration processes.

Changes

Files/Groups Change Summary
.github/workflows/coverage.yml,
.github/workflows/e2e.yml,
.github/workflows/release.yml,
.github/workflows/test.yml
CI workflows switched from Yarn to pnpm, updated cache paths, lockfiles, and commands accordingly.
.gitignore Updated comments and added pnpm-specific ignore entries.
.husky/pre-commit Simplified script, replaced Yarn lint command with pnpm.
.npmrc Added pnpm configuration file with registry, hoisting, and workspace settings.
docs/dev.md,
docs/test.md
Documentation updated to use pnpm commands and instructions instead of Yarn.
package.json Changed packageManager to pnpm, updated scripts and dependencies, switched all Yarn commands to pnpm.
packages/editor/package.json Updated "example" script to use pnpm instead of Yarn.
packages/yjs/examples/frontend/package.json Changed deploy script from Yarn to pnpm for Netlify deployment.
pnpm-workspace.yaml Added pnpm workspace configuration to include packages/* and shared/* directories.
packages/custom-types.d.ts Added triple-slash reference to slate types and exported BaseElement, CustomElement, and ElementType.

Sequence Diagram(s)

sequenceDiagram
    participant Developer
    participant pnpm
    participant CI Workflow
    participant Node.js

    Developer->>pnpm: Run install/build/test commands
    pnpm->>Node.js: Resolve and install dependencies
    CI Workflow->>pnpm: Install dependencies in CI
    CI Workflow->>pnpm: Run build/test/lint scripts
    pnpm->>Node.js: Execute scripts using workspace settings
Loading

Poem

A hop, a leap, a pnpm switch,
Goodbye to Yarn, we've scratched that itch!
Workflows, scripts, and docs anew—
The rabbit’s path is fast and true.
With caches fresh and lockfiles tight,
Our code now builds with extra might!
🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dd9e837 and 21a3566.

📒 Files selected for processing (1)
  • .changeset/green-drinks-make.md (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • .changeset/green-drinks-make.md
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: test

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@cycleccc cycleccc changed the title WIP: migrate from Yarn to pnpm as the package manager chore: migrate from Yarn to pnpm as the package manager Jun 30, 2025

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🔭 Outside diff range comments (4)
packages/editor/package.json (1)

1-1: Align pnpm versions between package.json and CI workflows

Your root package.json pins pnpm to 9.15.0 (line 4), but the GitHub Actions workflows install “latest v9” by default, causing a CLI–packageManager mismatch. To fix this, pin the action to the same patch release:

• Root package.json (package.json:4)

"packageManager": "pnpm@9.15.0",

• In each workflow (.github/workflows/release.yml, e2e.yml, test.yml, coverage.yml), update the pnpm setup step:

- name: Install pnpm
- uses: pnpm/action-setup@v4
+ name: Install pnpm
+ uses: pnpm/action-setup@v4
  with:
+   version: 9.15.0

Alternatively, if you’d rather track patch updates automatically, you can relax the packageManager field to "pnpm@9".

.github/workflows/coverage.yml (1)

42-48: Cache key uses undefined matrix.node-version

matrix is not declared in this job, so the expression expands to an empty string and
action-lint flags it.

-key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/pnpm-lock.yaml') }}
+key: ${{ runner.os }}-node-18-${{ hashFiles('**/pnpm-lock.yaml') }}

Apply the same fix to the restore-key if present.

.github/workflows/test.yml (1)

55-61: Undefined matrix.node-version in cache key

Replicate the fix applied to coverage.yml.

-key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/pnpm-lock.yaml') }}
+key: ${{ runner.os }}-node-18-${{ hashFiles('**/pnpm-lock.yaml') }}
.github/workflows/e2e.yml (1)

48-60: Undefined matrix.node-version breaks cache key

The job does not declare a matrix, yet the cache key uses ${{ matrix.node-version }}.
GitHub Actions will render that as an empty string, defeating cache hits and triggering actionlint errors.

Quick fix:

- key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/pnpm-lock.yaml') }}
+ key: ${{ runner.os }}-node-18-${{ hashFiles('**/pnpm-lock.yaml') }}

(or introduce a matrix like in release.yml).

♻️ Duplicate comments (1)
.github/workflows/e2e.yml (1)

42-47: Same pnpm version mismatch as in other workflows

Please pin pnpm/action-setup to 9.15.0 (or relax packageManager).

🧹 Nitpick comments (9)
pnpm-workspace.yaml (1)

1-3: Fix YAML formatting issues.

The workspace configuration is correct, but there are formatting issues that need to be addressed:

  1. Missing newline at the end of the file
  2. Trailing spaces on line 3

Apply this diff to fix the formatting:

 packages:
   - 'packages/*'
-  - 'shared/*' 
+  - 'shared/*'
+
packages/yjs/examples/frontend/package.json (1)

9-9: pnpm CLI will fail if netlify-cli is not hoisted

Because pnpm is strict-by-default, the netlify binary is only added to this package’s local .bin folder.
The script will work when executed from this workspace only if it is called from this package directory or if shamefully-hoist=true (which you enabled).
If another workspace script (pnpm -F :frontend deploy) calls it, the binary might be missing.

Consider adding the -w flag or moving netlify-cli to the repo-root devDependencies so the binary is always on the execution path, e.g.:

"devDependencies": {
-  "netlify-cli": "^8.6.0",
+  "netlify-cli": "^8.6.0",          // keep here
+  "@wangeditor-next/root": {        // or move to root package.json
+    "netlify-cli": "^8.6.0"
+  }
}
.npmrc (1)

5-7: shamefully-hoist and the two workspace flags overlap

shamefully-hoist=true flattens all dependencies into the root node_modules, while
prefer-workspace-packages=true and link-workspace-packages=true already ensure local links between packages.

Flattening defeats pnpm’s disk-saving goal and can hide duplicate-version problems.

Unless you have a hard tooling constraint that requires a flat tree, drop shamefully-hoist to keep the install lightweight:

-shamefully-hoist=true
docs/dev.md (2)

37-44: Out-of-date Lerna instructions

lerna link is Yarn-classic specific; with pnpm workspaces the equivalent is handled automatically (pnpm install) or via pnpm link – recursive.

Update the note to prevent confusion for new contributors.

- 如果本地包依赖有问题,试试 `lerna link` 关联内部包
+ 如果本地包依赖有问题,执行 `pnpm install -r` 重新链接 workspace 依赖

47-56: pnpm size-stats is not a core command

This is provided by @pnpm/size-stats which is not listed anywhere in devDependencies.
Either document the prerequisite:

pnpm add -w -D @pnpm/size-stats

or change the step to a built-in alternative like pnpm dlx size-limit.

Leaving it undocumented will give newcomers “command not found”.

.github/workflows/coverage.yml (1)

50-56: Missed turbo/pnpm store path optimisation

~/.pnpm-store is correct for Linux, but the cache entry should point to
${{ env.PNPM_HOME }}/store to remain future-proof when pnpm switches default
store location.

Not blocking, but worth tracking.

.github/workflows/test.yml (1)

62-65: Use pnpm install --frozen-lockfile in CI

Guarantees reproducible installs and will fail the job if the lock-file is out of sync.

-run: pnpm install
+run: pnpm install --frozen-lockfile
package.json (2)

19-22: Minor: prefer the shorter pnpm exec form in scripts

Using the binary through pnpm’s shim (pnpm changeset …) spawns an extra process.
For brevity and tiny perf gain:

- "publish": "pnpm changeset publish",
- "prerelease": "pnpm build",
- "format": "pnpm prettier --write",
+ "publish": "pnpm exec changeset publish",
+ "prerelease": "pnpm run build",
+ "format": "pnpm exec prettier --write",

Not blocking, just a nicety.


28-29: Use pnpm run inside concurrently for consistency

Inside the concurrently strings you’re bypassing the script runner:

- "e2e:dev": "concurrently \"pnpm example\" \"pnpm run cypress:open\"",
- "e2e":     "concurrently \"pnpm example\" \"pnpm run cypress:run\"",
+ "e2e:dev": "concurrently \"pnpm run example\" \"pnpm run cypress:open\"",
+ "e2e":     "concurrently \"pnpm run example\" \"pnpm run cypress:run\"",

This guarantees lifecycle hooks such as preexample run if they ever exist.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d4d8096 and e9c86fe.

📒 Files selected for processing (13)
  • .github/workflows/coverage.yml (2 hunks)
  • .github/workflows/e2e.yml (2 hunks)
  • .github/workflows/release.yml (2 hunks)
  • .github/workflows/test.yml (2 hunks)
  • .gitignore (2 hunks)
  • .husky/pre-commit (1 hunks)
  • .npmrc (1 hunks)
  • docs/dev.md (1 hunks)
  • docs/test.md (3 hunks)
  • package.json (4 hunks)
  • packages/editor/package.json (1 hunks)
  • packages/yjs/examples/frontend/package.json (1 hunks)
  • pnpm-workspace.yaml (1 hunks)
🧰 Additional context used
🪛 GitHub Actions: Cypress tests
packages/editor/package.json

[error] 1-1: Multiple versions of pnpm specified: version 9 in GitHub Action config and pnpm@9.15.0 in package.json. Remove one to avoid version mismatch errors like ERR_PNPM_BAD_PM_VERSION.

packages/yjs/examples/frontend/package.json

[error] 1-1: Multiple versions of pnpm specified: version 9 in GitHub Action config and pnpm@9.15.0 in package.json. Remove one to avoid version mismatch errors like ERR_PNPM_BAD_PM_VERSION.

package.json

[error] 1-1: Multiple versions of pnpm specified: version 9 in GitHub Action config and pnpm@9.15.0 in package.json. Remove one to avoid version mismatch errors like ERR_PNPM_BAD_PM_VERSION.

🪛 GitHub Actions: Unit Test
packages/editor/package.json

[error] 1-1: Multiple versions of pnpm specified: version 9 in GitHub Action config and pnpm@9.15.0 in package.json. Remove one to avoid version mismatch errors like ERR_PNPM_BAD_PM_VERSION.

packages/yjs/examples/frontend/package.json

[error] 1-1: Multiple versions of pnpm specified: version 9 in GitHub Action config and pnpm@9.15.0 in package.json. Remove one to avoid version mismatch errors like ERR_PNPM_BAD_PM_VERSION.

package.json

[error] 1-1: Multiple versions of pnpm specified: version 9 in GitHub Action config and pnpm@9.15.0 in package.json. Remove one to avoid version mismatch errors like ERR_PNPM_BAD_PM_VERSION.

🪛 YAMLlint (1.37.1)
pnpm-workspace.yaml

[error] 3-3: no new line character at the end of file

(new-line-at-end-of-file)


[error] 3-3: trailing spaces

(trailing-spaces)

🪛 actionlint (1.7.7)
.github/workflows/test.yml

60-60: property "node-version" is not defined in object type {}

(expression)

.github/workflows/coverage.yml

47-47: property "node-version" is not defined in object type {}

(expression)

.github/workflows/e2e.yml

58-58: property "node-version" is not defined in object type {}

(expression)

🔇 Additional comments (7)
packages/editor/package.json (1)

45-45: Script migration looks correct.

The change from yarn dev-watch to pnpm dev-watch is appropriate for the package manager migration.

.husky/pre-commit (1)

1-1: Pre-commit hook migration looks good.

The change from yarn lint:staged to pnpm lint:staged is correct for the package manager migration. The simplified format is appropriate for modern Husky versions.

.gitignore (2)

68-68: Good generalization of the comment.

Changing from "# Yarn Integrity file" to "# Package manager files" makes the comment more generic and appropriate for supporting multiple package managers.


78-80: Proper pnpm-specific entries added.

The addition of pnpm-lock.yaml and .pnpm-debug.log* entries is correct and ensures pnpm-specific files are properly excluded from version control.

docs/test.md (1)

10-10: Documentation migration is comprehensive and correct.

All test-related commands have been properly updated from yarn to pnpm, including unit tests, coverage, build, and E2E test commands. The documentation now accurately reflects the new package manager.

Also applies to: 14-14, 18-18, 30-30, 42-42

pnpm-workspace.yaml (1)

1-3: Workspace configuration looks appropriate.

The workspace packages configuration correctly includes both packages/* and shared/* directories, which aligns with the monorepo structure mentioned in the documentation.

.github/workflows/coverage.yml (1)

58-60: Script name drift

The workflow calls pnpm run test-c, yet the typical script in this repo is test:cov.
Double-check the package.json scripts to avoid “missing script” failures.

Comment thread .npmrc
Comment thread .github/workflows/coverage.yml
Comment thread .github/workflows/test.yml
Comment thread package.json Outdated
Comment thread package.json
Comment thread .github/workflows/release.yml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🔭 Outside diff range comments (1)
.github/workflows/e2e.yml (1)

51-57: Define or Replace matrix.node-version in Cache Key

The cache key is currently using an undefined ${{ matrix.node-version }} (lines 51–57 in .github/workflows/e2e.yml), which always resolves to an empty string—breaking cache lookups and triggering Actionlint.

Please update one of the following:

• Add a strategy.matrix for node-version in the job:

jobs:
  e2e:
    strategy:
      matrix:
        node-version: [18, 20]
    runs-on: ubuntu-latest
    #
    steps:
      - uses: actions/cache@v3
        with:
          key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/pnpm-lock.yaml') }}

• Expose the version from setup-node and reference its output:

- id: setup-node
  uses: actions/setup-node@v4
  with:
    node-version: '18'

#
- uses: actions/cache@v3
  with:
    key: ${{ runner.os }}-node-${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('**/pnpm-lock.yaml') }}

• Or hard-code the version if only one Node version is used:

- key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/pnpm-lock.yaml') }}
+ key: ${{ runner.os }}-node-18-${{ hashFiles('**/pnpm-lock.yaml') }}

These changes will restore correct cache behavior and silence the lint error.

🧹 Nitpick comments (2)
.github/workflows/e2e.yml (2)

42-45: Pin pnpm version and enable built-in cache instead of a custom step

Relying on the latest pnpm every run can introduce breaking changes without warning.
pnpm/action-setup supports both version pinning and automatic cache restore, which lets you delete the manual actions/cache stanza altogether:

-# 安装 pnpm
-- name: Install pnpm
-uses: pnpm/action-setup@v4
+# 安装 pnpm(锁定版本并启用缓存)
+- name: Install pnpm
+uses: pnpm/action-setup@v4
+with:
+  version: 8 # stick to a major you have tested
+  cache: true

This keeps builds reproducible and avoids maintaining two separate cache mechanisms.


61-66: Use --frozen-lockfile for deterministic installs

pnpm install --frozen-lockfile (or --frozen-if-present with v8) fails the build when pnpm-lock.yaml is out of sync, catching accidental drift early.

-      - name: Install dependencies
-        run: pnpm install
+      - name: Install dependencies
+        run: pnpm install --frozen-lockfile

A tiny guardrail that saves CI time and surprises.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3aae669 and e47f2e4.

📒 Files selected for processing (1)
  • .github/workflows/e2e.yml (2 hunks)
🧰 Additional context used
🪛 actionlint (1.7.7)
.github/workflows/e2e.yml

56-56: property "node-version" is not defined in object type {}

(expression)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: test

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
.github/workflows/e2e.yml (2)

42-45: Pin the pnpm version for deterministic builds

pnpm/action-setup@v4 will install the latest pnpm available at workflow-runtime.
Explicitly setting with: version: '8.x' (or the version the repo is tested with) prevents future, unexpected CI failures when a new major pnpm is released.

-      - name: Install pnpm
-        uses: pnpm/action-setup@v4
+      - name: Install pnpm
+        uses: pnpm/action-setup@v4
+        with:
+          version: '8.15.5'   # keep in sync with packageManager field in package.json

61-66: Use the lock-file-strict flag to ensure reproducible installs

pnpm install without --frozen-lockfile (or --immutable) may rewrite pnpm-lock.yaml, causing noisy diffs or divergent environments between local and CI.

-        run: pnpm install
+        run: pnpm install --frozen-lockfile --prefer-offline

This mirrors the strictness you likely had with Yarn and speeds up CI by re-using the cache when possible.
(If you rely on pnpm i modifying the lockfile in CI, ignore this.)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e47f2e4 and d842512.

📒 Files selected for processing (3)
  • .github/workflows/e2e.yml (2 hunks)
  • package.json (3 hunks)
  • packages/custom-types.d.ts (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • package.json
🧰 Additional context used
🪛 actionlint (1.7.7)
.github/workflows/e2e.yml

56-56: property "node-version" is not defined in object type {}

(expression)

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: test
  • GitHub Check: test-e2e
🔇 Additional comments (2)
packages/custom-types.d.ts (2)

5-5: LGTM: Proper placement of triple-slash directive.

The /// <reference types="slate" /> directive is correctly placed at the top of the file before imports, ensuring Slate type definitions are available throughout the module. This explicit reference improves type safety and is good practice, especially with pnpm's stricter dependency resolution.


107-107: LGTM: Explicit type exports improve module interface.

The explicit export of BaseElement, CustomElement, and ElementType makes these core types available for import in other modules. All exported types are properly defined within the file and represent the key type definitions that other parts of the codebase would likely need to reference.

Comment thread .github/workflows/e2e.yml
@cycleccc cycleccc merged commit 09fa830 into master Jul 1, 2025
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant