[bug]: TypeScript Export Path Issue with Strapi Plugin Build

Open
#96 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 6 days

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
56/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
typescript
Domain
build-system, cli

Research direction

Start with package.json exports, tsconfig.build.json, and the default build and verify scripts. Run npm run build followed by npm run verify and compare the generated dist//admin/src and server/src declarations with the export paths. Done means the build output and package.json agree so verification passes without running watch first.

Written by the indexing model from the issue text.

Description

issue: bug
What version of @strapi/sdk-plugin are you using?
  • Npm version: 10.8.2
  • Node.js version: 20.18.3
  • React version: 18.3.1
  • Strapi version: 5.23.3
  • @strapi/sdk-plugin version: 5.3.2
  • Browser: Chrome
What's Wrong?

When building a Strapi plugin with TypeScript, the generated type definitions (.d.ts) are placed in a nested folder (e.g. dist/<plugin-name>/admin/src/index.d.ts).

However, the default package.json configuration expects the types in dist/admin/src/index.d.ts and dist/server/src/index.d.ts, causing verification errors when running the script:

"verify": "strapi-plugin verify"

The error output:

[ERROR]  Missing files for exports:
    ./dist/admin/src/index.d.ts
    ./dist/server/src/index.d.ts
Image
To Reproduce
  1. Create or update a Strapi plugin with TypeScript in a monorepo (Nx or similar).

  2. Use the default build scripts and tsconfig.build.json.

  3. Run the build and verify commands:

    npm run build
    npm run verify
    
  4. Observe that the type files are generated in dist/<plugin-name>/admin/src and dist/<plugin-name>/server/src.

  5. The verification fails due to missing files in the expected export paths.

Expected Behaviour
  • The plugin build should generate type files in the exact paths expected by the package.json exports field, or the package.json should be updated to match the actual output structure.

  • After updating the package.json to:

    "types": "./dist/<plugin-name>/admin/src/index.d.ts"
    

    and

    "types": "./dist/<plugin-name>/server/src/index.d.ts"
    

    the verification passes and the plugin works as expected

Additional Notes

  • If you run watch: strapi-plugin watch before running verify, the verification will pass without errors. This is because the watch command generates the type files in the expected locations before verification.
Dominant language
TypeScript
Stars
24
Forks
13
Avg merge
5d 3h
Merged PRs (30d)
5

Getting set up

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from strapi/sdk-plugin

All issues in strapi/sdk-plugin

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.