[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"github-stars":3,"directus-extension-endpoint-xlsx-export":110,"marketplace-site-banners":136},{"id":4,"node_id":5,"name":6,"full_name":7,"private":8,"owner":9,"html_url":27,"description":28,"fork":8,"url":29,"forks_url":30,"keys_url":31,"collaborators_url":32,"teams_url":33,"hooks_url":34,"issue_events_url":35,"events_url":36,"assignees_url":37,"branches_url":38,"tags_url":39,"blobs_url":40,"git_tags_url":41,"git_refs_url":42,"trees_url":43,"statuses_url":44,"languages_url":45,"stargazers_url":46,"contributors_url":47,"subscribers_url":48,"subscription_url":49,"commits_url":50,"git_commits_url":51,"comments_url":52,"issue_comment_url":53,"contents_url":54,"compare_url":55,"merges_url":56,"archive_url":57,"downloads_url":58,"issues_url":59,"pulls_url":60,"milestones_url":61,"notifications_url":62,"labels_url":63,"releases_url":64,"deployments_url":65,"created_at":66,"updated_at":67,"pushed_at":68,"git_url":69,"ssh_url":70,"clone_url":71,"svn_url":27,"homepage":72,"size":73,"stargazers_count":74,"watchers_count":74,"language":75,"has_issues":76,"has_projects":76,"has_downloads":76,"has_wiki":8,"has_pages":8,"has_discussions":76,"forks_count":77,"mirror_url":78,"archived":8,"disabled":8,"open_issues_count":79,"license":80,"allow_forking":76,"is_template":8,"web_commit_signoff_required":8,"has_pull_requests":76,"pull_request_creation_policy":85,"topics":86,"visibility":26,"forks":77,"open_issues":79,"watchers":74,"default_branch":106,"temp_clone_token":78,"custom_properties":107,"organization":108,"network_count":77,"subscribers_count":109},7122594,"MDEwOlJlcG9zaXRvcnk3MTIyNTk0","directus","directus\u002Fdirectus",false,{"login":6,"id":10,"node_id":11,"avatar_url":12,"gravatar_id":13,"url":14,"html_url":15,"followers_url":16,"following_url":17,"gists_url":18,"starred_url":19,"subscriptions_url":20,"organizations_url":21,"repos_url":22,"events_url":23,"received_events_url":24,"type":25,"user_view_type":26,"site_admin":8},15967950,"MDEyOk9yZ2FuaXphdGlvbjE1OTY3OTUw","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F15967950?v=4","","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus","https:\u002F\u002Fgithub.com\u002Fdirectus","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Ffollowers","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Ffollowing{\u002Fother_user}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Fgists{\u002Fgist_id}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Fstarred{\u002Fowner}{\u002Frepo}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Fsubscriptions","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Forgs","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Frepos","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Fevents{\u002Fprivacy}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fdirectus\u002Freceived_events","Organization","public","https:\u002F\u002Fgithub.com\u002Fdirectus\u002Fdirectus","The flexible backend for all your projects 🐰 Turn your DB into a headless CMS, admin panels, or apps with a custom UI, instant APIs, auth & more.","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fforks","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fkeys{\u002Fkey_id}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcollaborators{\u002Fcollaborator}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fteams","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fhooks","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fissues\u002Fevents{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fevents","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fassignees{\u002Fuser}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fbranches{\u002Fbranch}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Ftags","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fgit\u002Fblobs{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fgit\u002Ftags{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fgit\u002Frefs{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fgit\u002Ftrees{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fstatuses\u002F{sha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Flanguages","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fstargazers","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcontributors","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fsubscribers","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fsubscription","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcommits{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fgit\u002Fcommits{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcomments{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fissues\u002Fcomments{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcontents\u002F{+path}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fcompare\u002F{base}...{head}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fmerges","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002F{archive_format}{\u002Fref}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fdownloads","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fissues{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fpulls{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fmilestones{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fnotifications{?since,all,participating}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Flabels{\u002Fname}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Freleases{\u002Fid}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdirectus\u002Fdirectus\u002Fdeployments","2012-12-12T01:35:36Z","2026-06-01T20:57:39Z","2026-06-01T21:41:46Z","git:\u002F\u002Fgithub.com\u002Fdirectus\u002Fdirectus.git","git@github.com:directus\u002Fdirectus.git","https:\u002F\u002Fgithub.com\u002Fdirectus\u002Fdirectus.git","https:\u002F\u002Fdirectus.io",442985,36031,"TypeScript",true,4790,null,402,{"key":81,"name":82,"spdx_id":83,"url":78,"node_id":84},"other","Other","NOASSERTION","MDc6TGljZW5zZTA=","all",[87,88,89,90,91,92,6,93,94,95,96,97,98,99,100,101,102,103,104,105],"api","app","cms","composable","data-visualization","database","graphql","headless-cms","javascript","mariadb","mssql","mysql","no-code","node","postgresql","sql","sqlite","typescript","vue","main",{},{"login":6,"id":10,"node_id":11,"avatar_url":12,"gravatar_id":13,"url":14,"html_url":15,"followers_url":16,"following_url":17,"gists_url":18,"starred_url":19,"subscriptions_url":20,"organizations_url":21,"repos_url":22,"events_url":23,"received_events_url":24,"type":25,"user_view_type":26,"site_admin":8},327,{"name":111,"description":112,"verified":8,"id":113,"readme":114,"type":115,"last_updated":116,"host_version":117,"downloads":118,"total_downloads":119,"sandbox":8,"license":120,"publisher":121,"versions":124,"formatted_name":133,"formatted_readme":134,"formatted_description":112,"images":135,"recent_downloads_7_days":119,"recent_downloads_30_days":119},"directus-extension-endpoint-xlsx-export","Export collection items as XLSX files.","fdc94c15-0df4-4a2c-8e94-d6665f3e5bbc","# directus-extension-endpoint-xlsx-export\n\nExport Directus collection items as real XLSX files through a custom endpoint.\n\nThis package exposes a fixed endpoint root:\n\n```text\n\u002Fxlsx\u002F:collection\n```\n\nExample:\n\n```text\n\u002Fxlsx\u002Faulas?filter[id][_eq]=18\n```\n\n## Features\n\n- Exposes a stable endpoint root: `\u002Fxlsx`\n- Uses real XLSX output, not CSV renamed as XLSX\n- Forwards native Directus query parameters such as `filter`, `fields`, `sort`, `limit`, `offset`, `page`, `search`, `deep`, and `alias`\n- Defaults `limit` to `-1` when omitted, so exports include all matching rows\n- Converts nested arrays and objects to JSON strings so spreadsheets open cleanly\n- Supports optional `filename` and `sheet` query parameters\n\n## Requirements\n\n- Directus 11.x\n- A self-hosted Directus project\n- Node.js and npm for local development\n\n## Route\n\n```text\nGET \u002Fxlsx\u002F:collection\n```\n\n### Query Parameters\n\nAll standard Directus query parameters are forwarded to `ItemsService.readByQuery()`.\n\nAdditional custom query parameters:\n\n- `filename`: overrides the downloaded file name\n- `sheet`: overrides the worksheet name\n\nExamples:\n\n```text\n\u002Fxlsx\u002Faulas?filter[id][_eq]=18\n\u002Fxlsx\u002Fposts?fields=id,title,status&sort=-date_created\n\u002Fxlsx\u002Forders?filter[status][_eq]=paid&filename=paid-orders\n\u002Fxlsx\u002Fusers?limit=50&sheet=Users\n```\n\n## Build\n\n```bash\nnpm install\nnpm run build\n```\n\nBuild output will be written to:\n\n```text\ndist\u002Findex.js\n```\n\n## Local Installation in a Directus Project\n\nBuild the extension first:\n\n```bash\nnpm install\nnpm run build\n```\n\nThen copy the built package into your Directus `extensions` directory:\n\n```bash\nmkdir -p \u002Fpath\u002Fto\u002Fdirectus\u002Fextensions\u002Fdirectus-extension-endpoint-xlsx-export\ncp -R dist package.json README.md LICENSE \u002Fpath\u002Fto\u002Fdirectus\u002Fextensions\u002Fdirectus-extension-endpoint-xlsx-export\u002F\n```\n\nRestart Directus.\n\nIf your Directus project is running in Docker and mounts `.\u002Fextensions:\u002Fdirectus\u002Fextensions`, copy the built package into that mounted local `extensions` directory.\n\n## Installation from npm in a Custom Directus Image\n\nAfter publishing this package to npm, install it in your custom Directus image.\n\nExample `Dockerfile`:\n\n```Dockerfile\nFROM directus\u002Fdirectus:latest\n\nUSER root\nRUN corepack enable\nUSER node\n\nRUN pnpm install directus-extension-endpoint-xlsx-export\n```\n\nThen rebuild and restart your Directus stack:\n\n```bash\ndocker compose build\ndocker compose up -d\n```\n\n## Development with Auto Reload\n\nIf you are mounting a local `extensions` directory into Directus, enable auto reload in your Directus container environment:\n\n```yaml\nEXTENSIONS_AUTO_RELOAD: true\n```\n\nThen run:\n\n```bash\nnpm install\nnpm run dev\n```\n\n## Usage\n\n### Export a Single Item by ID\n\n```text\n\u002Fxlsx\u002Faulas?filter[id][_eq]=18\n```\n\n### Export Selected Fields\n\n```text\n\u002Fxlsx\u002Faulas?filter[id][_eq]=18&fields=id,titulo,data\n```\n\n### Custom File Name\n\n```text\n\u002Fxlsx\u002Faulas?filter[id][_eq]=18&filename=aula-18\n```\n\n### Custom Sheet Name\n\n```text\n\u002Fxlsx\u002Faulas?filter[id][_eq]=18&sheet=Aula%2018\n```\n\n## Publish to npm\n\nBefore publishing:\n\n```bash\nnpm install\nnpm run build\nnpm pack --dry-run\n```\n\nThen publish:\n\n```bash\nnpm publish\n```\n\nIf you change to a scoped package name, publish it as public:\n\n```bash\nnpm publish --access public\n```\n\n## Notes\n\n- The public endpoint root is controlled by `id: \"xlsx\"` in `src\u002Findex.ts`\n- You can change the npm package name without changing the public route\n- If the exact npm package name is already taken, only change `package.json.name`\n- Large exports can still be capped by Directus `QUERY_LIMIT_MAX`\n- This package provides an API endpoint only. It does not add a Directus UI button\n","endpoint","2026-04-20T20:52:10.666Z","^11.0.0",[],0,"MIT",{"username":122,"verified":8,"id":123,"github_username":78,"github_name":78,"github_blog":78,"github_bio":78,"github_location":78,"github_company":78,"github_avatar_url":78},"umappsnet","099d079d-61ab-4e61-832a-cb9af8773755",[125],{"version":126,"package":113,"publisher":123,"type":115,"host_version":117,"publish_date":116,"verified":8,"id":127,"url_repository":78,"url_homepage":78,"url_bugs":78,"file_count":128,"unpacked_size":129,"sandbox":8,"sandbox_requested_scopes":78,"license":120,"bundled":130,"maintainers":131},"0.1.0","66ea2533-4726-4bc9-bfd5-565b37c714c1",6,291848,[],[132],14210,"Endpoint Xlsx Export","\u003Ch1>directus-extension-endpoint-xlsx-export\u003C\u002Fh1>\n\u003Cp>Export Directus collection items as real XLSX files through a custom endpoint.\u003C\u002Fp>\n\u003Cp>This package exposes a fixed endpoint root:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">\u002Fxlsx\u002F:collection\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">\u002Fxlsx\u002Faulas?filter[id][_eq]=18\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Features\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>Exposes a stable endpoint root: \u003Ccode>\u002Fxlsx\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Uses real XLSX output, not CSV renamed as XLSX\u003C\u002Fli>\n\u003Cli>Forwards native Directus query parameters such as \u003Ccode>filter\u003C\u002Fcode>, \u003Ccode>fields\u003C\u002Fcode>, \u003Ccode>sort\u003C\u002Fcode>, \u003Ccode>limit\u003C\u002Fcode>, \u003Ccode>offset\u003C\u002Fcode>, \u003Ccode>page\u003C\u002Fcode>, \u003Ccode>search\u003C\u002Fcode>, \u003Ccode>deep\u003C\u002Fcode>, and \u003Ccode>alias\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Defaults \u003Ccode>limit\u003C\u002Fcode> to \u003Ccode>-1\u003C\u002Fcode> when omitted, so exports include all matching rows\u003C\u002Fli>\n\u003Cli>Converts nested arrays and objects to JSON strings so spreadsheets open cleanly\u003C\u002Fli>\n\u003Cli>Supports optional \u003Ccode>filename\u003C\u002Fcode> and \u003Ccode>sheet\u003C\u002Fcode> query parameters\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Requirements\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>Directus 11.x\u003C\u002Fli>\n\u003Cli>A self-hosted Directus project\u003C\u002Fli>\n\u003Cli>Node.js and npm for local development\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Route\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-text\">GET \u002Fxlsx\u002F:collection\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Query Parameters\u003C\u002Fh3>\n\u003Cp>All standard Directus query parameters are forwarded to \u003Ccode>ItemsService.readByQuery()\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Additional custom query parameters:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>filename\u003C\u002Fcode>: overrides the downloaded file name\u003C\u002Fli>\n\u003Cli>\u003Ccode>sheet\u003C\u002Fcode>: overrides the worksheet name\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Examples:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">\u002Fxlsx\u002Faulas?filter[id][_eq]=18\n\u002Fxlsx\u002Fposts?fields=id,title,status&amp;sort=-date_created\n\u002Fxlsx\u002Forders?filter[status][_eq]=paid&amp;filename=paid-orders\n\u002Fxlsx\u002Fusers?limit=50&amp;sheet=Users\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Build\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm install\nnpm run build\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Build output will be written to:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">dist\u002Findex.js\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Local Installation in a Directus Project\u003C\u002Fh2>\n\u003Cp>Build the extension first:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm install\nnpm run build\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Then copy the built package into your Directus \u003Ccode>extensions\u003C\u002Fcode> directory:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">mkdir -p \u002Fpath\u002Fto\u002Fdirectus\u002Fextensions\u002Fdirectus-extension-endpoint-xlsx-export\ncp -R dist package.json README.md LICENSE \u002Fpath\u002Fto\u002Fdirectus\u002Fextensions\u002Fdirectus-extension-endpoint-xlsx-export\u002F\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Restart Directus.\u003C\u002Fp>\n\u003Cp>If your Directus project is running in Docker and mounts \u003Ccode>.\u002Fextensions:\u002Fdirectus\u002Fextensions\u003C\u002Fcode>, copy the built package into that mounted local \u003Ccode>extensions\u003C\u002Fcode> directory.\u003C\u002Fp>\n\u003Ch2>Installation from npm in a Custom Directus Image\u003C\u002Fh2>\n\u003Cp>After publishing this package to npm, install it in your custom Directus image.\u003C\u002Fp>\n\u003Cp>Example \u003Ccode>Dockerfile\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-Dockerfile\">FROM directus\u002Fdirectus:latest\n\nUSER root\nRUN corepack enable\nUSER node\n\nRUN pnpm install directus-extension-endpoint-xlsx-export\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Then rebuild and restart your Directus stack:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">docker compose build\ndocker compose up -d\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Development with Auto Reload\u003C\u002Fh2>\n\u003Cp>If you are mounting a local \u003Ccode>extensions\u003C\u002Fcode> directory into Directus, enable auto reload in your Directus container environment:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-yaml\">EXTENSIONS_AUTO_RELOAD: true\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Then run:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm install\nnpm run dev\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Usage\u003C\u002Fh2>\n\u003Ch3>Export a Single Item by ID\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-text\">\u002Fxlsx\u002Faulas?filter[id][_eq]=18\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Export Selected Fields\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-text\">\u002Fxlsx\u002Faulas?filter[id][_eq]=18&amp;fields=id,titulo,data\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Custom File Name\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-text\">\u002Fxlsx\u002Faulas?filter[id][_eq]=18&amp;filename=aula-18\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Custom Sheet Name\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-text\">\u002Fxlsx\u002Faulas?filter[id][_eq]=18&amp;sheet=Aula%2018\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Publish to npm\u003C\u002Fh2>\n\u003Cp>Before publishing:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm install\nnpm run build\nnpm pack --dry-run\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Then publish:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm publish\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>If you change to a scoped package name, publish it as public:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm publish --access public\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Notes\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>The public endpoint root is controlled by \u003Ccode>id: \"xlsx\"\u003C\u002Fcode> in \u003Ccode>src\u002Findex.ts\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>You can change the npm package name without changing the public route\u003C\u002Fli>\n\u003Cli>If the exact npm package name is already taken, only change \u003Ccode>package.json.name\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Large exports can still be capped by Directus \u003Ccode>QUERY_LIMIT_MAX\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>This package provides an API endpoint only. It does not add a Directus UI button\u003C\u002Fli>\n\u003C\u002Ful>\n",[],[137],{"id":138,"icon":139,"content":140,"link":141,"include_paths":78,"exclude_paths":78},"812bf73d-ebfb-4246-9538-937a09a0c795","connected_tv","Learn more about our native MCP","https:\u002F\u002Fdirectus.io\u002Fmcp"]