{"id":25391,"library":"esbuild-plugin-purescript","title":"esbuild-plugin-purescript","description":"An esbuild plugin that allows importing PureScript (.purs) files directly in JavaScript/TypeScript bundles. Version 1.1.1. It resolves PureScript modules by pointing esbuild to the compiled output directory (default: './output'). Does not run 'spago build' or tree-shake with zephyr; users must precompile PureScript separately. Minimal zero-config setup with source globs.","status":"active","version":"1.1.1","language":"javascript","source_language":"en","source_url":"https://github.com/Mateiadrielrafael/esbuild-plugin-purescript","tags":["javascript","purescript","esbuild","functional-programming"],"install":[{"cmd":"npm install esbuild-plugin-purescript","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-purescript","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-purescript","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Package is ESM-only; CommonJS require will fail.","wrong":"const PurescriptPlugin = require('esbuild-plugin-purescript')","symbol":"default","correct":"import PurescriptPlugin from 'esbuild-plugin-purescript'"},{"note":"Named export is PascalCase; wrong casing (camelCase or lowercase) leads to undefined.","wrong":"import { purescriptPlugin } from 'esbuild-plugin-purescript'","symbol":"PurescriptPlugin (named)","correct":"import { PurescriptPlugin } from 'esbuild-plugin-purescript'"},{"note":"Use dynamic import in CommonJS to access default export.","wrong":"const PurescriptPlugin = require('esbuild-plugin-purescript')","symbol":"PurescriptPlugin (CommonJS)","correct":"const PurescriptPlugin = (await import('esbuild-plugin-purescript')).default"}],"quickstart":{"code":"import esbuild from 'esbuild';\nimport PurescriptPlugin from 'esbuild-plugin-purescript';\nimport { resolve } from 'path';\n\nawait esbuild.build({\n  entryPoints: ['src/index.js'],\n  bundle: true,\n  outdir: 'dist',\n  plugins: [\n    PurescriptPlugin({\n      output: resolve(process.cwd(), 'output'),\n      sources: ['src/**/*.purs'],\n    }),\n  ],\n}).catch(() => process.exit(1));","lang":"javascript","description":"Registers the plugin with esbuild, specifying PureScript output directory and source globs."},"warnings":[{"fix":"Run 'spago build' or 'purs compile' before esbuild.","message":"Plugin does not compile PureScript; expects pre-compiled output directory. Missing build step causes runtime errors.","severity":"gotcha","affected_versions":"all"},{"fix":"Explicitly set 'sources' to a narrow glob matching your source files.","message":"Default 'sources' glob uses 'spago sources' which may include dist or test files incorrectly.","severity":"gotcha","affected_versions":"all"},{"fix":"Use zephyr for tree-shaking or manually trim output.","message":"Plugin does not tree-shake PureScript output; bundles all modules from output directory.","severity":"gotcha","affected_versions":"all"},{"fix":"Ensure esbuild is in CommonJS mode or use 'await import()' workaround.","message":"Plugin uses dynamic require() internally; may fail in ESM-only esbuild environments.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run 'npm install esbuild-plugin-purescript'.","cause":"Package not installed or missing from node_modules.","error":"Error: Cannot find module 'esbuild-plugin-purescript'"},{"fix":"Use 'import PurescriptPlugin from 'esbuild-plugin-purescript'' or '{ default: PurescriptPlugin }'.","cause":"Incorrect import style (e.g., named import instead of default).","error":"TypeError: PurescriptPlugin is not a function"},{"fix":"Run 'spago build' first and verify output paths.","cause":"PureScript output directory missing or incorrect path.","error":"ENOENT: no such file or directory, open '.../output/...'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}