{"id":15653094,"url":"https://github.com/deckchairlabs/mesozoic","last_synced_at":"2025-06-26T14:36:23.712Z","repository":{"id":57916469,"uuid":"529075454","full_name":"deckchairlabs/mesozoic","owner":"deckchairlabs","description":"A generic build system for Deno web apps","archived":false,"fork":false,"pushed_at":"2025-01-29T05:06:13.000Z","size":5879,"stargazers_count":30,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-04T04:18:48.172Z","etag":null,"topics":["deno","javascript","no-bundle","parcel-css","swc","typescript","web"],"latest_commit_sha":null,"homepage":"https://deno.land/x/mesozoic","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deckchairlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-26T01:38:11.000Z","updated_at":"2025-01-29T05:06:17.000Z","dependencies_parsed_at":"2024-10-03T12:44:48.381Z","dependency_job_id":"bac915fa-1dd7-4f7a-9b30-f3ad77b2ab8e","html_url":"https://github.com/deckchairlabs/mesozoic","commit_stats":{"total_commits":270,"total_committers":1,"mean_commits":270.0,"dds":0.0,"last_synced_commit":"0b5e53c4b4d5a5f7c600902e55bacc315c06080a"},"previous_names":[],"tags_count":82,"template":false,"template_full_name":null,"purl":"pkg:github/deckchairlabs/mesozoic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deckchairlabs%2Fmesozoic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deckchairlabs%2Fmesozoic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deckchairlabs%2Fmesozoic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deckchairlabs%2Fmesozoic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deckchairlabs","download_url":"https://codeload.github.com/deckchairlabs/mesozoic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deckchairlabs%2Fmesozoic/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262085880,"owners_count":23256536,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deno","javascript","no-bundle","parcel-css","swc","typescript","web"],"created_at":"2024-10-03T12:44:40.585Z","updated_at":"2025-06-26T14:36:23.679Z","avatar_url":"https://github.com/deckchairlabs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌄 mesozoic\n\n![GitHub Workflow Status](https://github.com/deckchairlabs/mesozoic/actions/workflows/ci.yml/badge.svg)\n[![Deno module](https://shield.deno.dev/x/mesozoic)](https://deno.land/x/mesozoic)\n![Deno compatibility](https://shield.deno.dev/deno/^1.20.0)\n\n### A generic build system for Deno web apps.\n\n## What does it do?\n\nMesozoic takes your source files from `root`, copies those source files to `output` (preserving your\nproject directory structure), transforms your JavaScript/TypeScript with [swc](https://swc.rs/),\ntransforms your stylesheets with [Lightning CSS](https://lightningcss.dev/) and writes those\nresulting transformations to your `output` directory.\n\n## API\n\nYou can build your own bespoke build system on top of Mesozoic, which\n[Ultra.js](https://ultrajs.dev) is currently doing.\n\n```ts\nimport { Builder, ContextBuilder } from \"https://deno.land/x/mesozoic@v1.3.12/mod.ts\";\n\nconst context = new ContextBuilder()\n  /**\n   * The absolute path to the \"root\" of your project.\n   */\n  .setRoot(import.meta.resolve(\"./\"))\n  /**\n   * The absolute path to where you would like the build to output to.\n   */\n  .setOutput(import.meta.resolve(\"./.output\"))\n  /**\n   * Ignore files from the build, relative to \"root\".\n   * Any file that matches the provided patterns won't be copied to the build output directory.\n   */\n  .ignore([\"./README.md\"])\n  /**\n   * Files which should have their contents hashed and appended to the filename,\n   * great for long term caching (https://web.dev/use-long-term-caching/)\n   */\n  .contentHash([\n    \"./src/**/*.+(ts|tsx|js|jsx|css)\",\n    \"./public/**/*.+(css|ico|jpg|png|svg|gif|otf|ttf|woff)\",\n  ])\n  /**\n   * Files which should be compiled by SWC, usually TypeScript or files with JSX.\n   */\n  .compile([\n    \"./**/*.+(ts|tsx|js|jsx)\",\n    // We can negate a pattern by prefixing it with \"!\"\n    \"!./vendor/server/**/*\",\n  ])\n  /**\n   * Build and validate the context.\n   */\n  .build();\n\n/**\n * Create a new builder with the context as defined above.\n */\nconst builder = new Builder(context, {\n  /**\n   * A custom name for your builder!\n   */\n  name: \"mesozoic\",\n  logLevel: \"INFO\",\n  compilerOptions: {\n    minify: true,\n    sourceMaps: false,\n    jsxImportSource: \"react\",\n  },\n  cssOptions: {\n    minify: true,\n    sourceMaps: false,\n    browserslist: [\"chrome 100\"],\n  },\n});\n\n/**\n * Setup your entrypoints, relative to \"root\".\n * A module graph will be built for each entry point defined.\n * Remote dependencies will also be independently fetched and output for each entrypoint.\n *\n * The key of the entrypoints config is the name of the entrypoint and also the output\n * directory name within the vendor output directory.\n */\nbuilder.setEntrypoints({\n  \"browser\": {\n    path: \"./client.tsx\",\n    target: \"browser\",\n  },\n  \"server\": {\n    path: \"./server.tsx\",\n    target: \"deno\",\n  },\n});\n\n/**\n * Clean the output directory\n */\nawait builder.cleanOutput();\n\n/**\n * Gather all source files from the root\n */\nconst sources = await builder.gatherSources();\n\n/**\n * Execute the build\n */\nconst result = await builder.build(sources);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeckchairlabs%2Fmesozoic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeckchairlabs%2Fmesozoic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeckchairlabs%2Fmesozoic/lists"}