UNPKG

payload-plugin-newsletter

Version:

Complete newsletter management plugin for Payload CMS with subscriber management, magic link authentication, and email service integration

74 lines (59 loc) 2.87 kB
# ESM/CJS Module Resolution Fix Summary ## Changes Made ### 1. **Added tsup Build Tool** - Added `tsup` v8.3.5 to devDependencies for proper ESM/CJS dual package support - Created `tsup.config.ts` with configuration for building both ESM and CJS outputs ### 2. **Updated package.json** - Changed entry points from source files (`./src/`) to built files (`./dist/`) - Added proper exports configuration with both ESM and CJS support: - ESM files: `.js` extension with `.d.ts` types - CJS files: `.cjs` extension with `.d.cts` types - Updated build scripts to use tsup - Added `module` field pointing to ESM entry ### 3. **Updated tsconfig.json** - Changed `moduleResolution` from "bundler" to "node" for better compatibility ### 4. **Created Build Script** - Added `build-and-commit.sh` for easy building and verification ## File Structure After Build ``` dist/ ├── index.js # ESM main entry ├── index.cjs # CJS main entry ├── index.d.ts # TypeScript definitions ├── index.d.cts # CJS TypeScript definitions ├── client.js # ESM client export ├── client.cjs # CJS client export ├── client.d.ts # Client TypeScript definitions ├── client.d.cts # CJS Client TypeScript definitions ├── types.js # ESM types export ├── types.cjs # CJS types export ├── types.d.ts # Types TypeScript definitions ├── types.d.cts # CJS Types TypeScript definitions ├── components.js # ESM components export ├── components.cjs # CJS components export ├── components.d.ts # Components TypeScript definitions └── components.d.cts # CJS Components TypeScript definitions ``` ## How to Build and Publish 1. **Install dependencies**: `bun install` 2. **Build the package**: `bun run build` 3. **Test locally**: Link the package to test in your project 4. **Publish**: `npm publish` (dist files will be included automatically) ## Benefits 1. **Proper ESM Support**: Next.js apps using `"type": "module"` can now import the package without issues 2. **CJS Compatibility**: Still works with CommonJS projects 3. **TypeScript Support**: Proper type definitions for both module systems 4. **Clean Exports**: Clear separation of server/client code with proper exports 5. **Future Proof**: Ready for the ESM-first ecosystem ## Testing the Fix To test in your ContentQuant project: 1. Build the plugin: `bun run build` 2. Link locally: `npm link` in plugin directory 3. Link in project: `npm link payload-plugin-newsletter` in ContentQuant 4. Import and use normally ## Next Steps 1. Run `./build-and-commit.sh` to build the package 2. Test the built package locally 3. Commit changes with message: "fix: add tsup build system for proper ESM/CJS dual package support" 4. Push to repository 5. Publish new version to npm