JSPM

  • Created
  • Published
  • Downloads 4
  • Score
    100M100P100Q42022F
  • License ISC

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (astro-content) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    Astro Content logo

    ~

    Documentation / Live demo website

    β€βœΏβ€
    πšŠπš•πš™πš‘πšŠ

    πŸ‘·πŸ»β€β™‚οΈΒ Β Under heavy development, use it at your own risk!   🚧

    ~
    Contributions are welcome
    πŸ‘


    What is it?

    Think of it as an hybrid of Wordpress + ACF, Obsidian and Ulysses, with a sprinkle of tRPC and nuxt/content.

    What it does?

    ✨  Adds a thin layer between Astro and your templates, bringing automatic typings, runtime validation and a handful of DX goodies.

    πŸ—Β Β Brings evolved authoring assistance, in a full-fledged back-office, inside your IDE or with CLI, as you prefer.

    Main goals

    Being content centric, this set of tools will give you:

    • Focus when designing πŸ‘Œ
    • Confidence when authoring ✍️
    • Predictability when integrating 🀝
    • Certainty while delivering πŸ’ͺ
    • Peace of mind when refactoring πŸ‘

    Warning: This is an alpha product β€” Heavy changes are on-going β€” Suggestions are welcome πŸ‘

    Method 1: Add to Astro project with CLI

    With yarn, npm or pnpm, run this in your existing Astro project:

    # If you want a fresh start β€”β€”v
    # pnpm create astro && cd ./my-astro-site
    
    pnpm astro add astro-content
    pnpm content setup

    Follow the prompts… πŸ‡

    Method 2: Clone demo project

    Shallow clone this minimal Astro starter, which comes with dummy content for you to play with:

    pnpx degit JulianCataldo/astro-content/demo ./ac-demo
    cd ./ac-demo && pnpm install
    
    # Clone dummy content
    pnpx degit JulianCataldo/astro-content/docs/content/@dummy ./content
    # β€”ORβ€” setup a minimal content base with Astro Content CLI
    pnpm content setup
    
    # Open project in VS Code
    code .

    Warning: Only Node 17 or higher is actually supported by Astro Content.

    Launch project

    OK, project is ready. It's time to:

    pnpm run dev

    Now head over to http://localhost:3000/__content to take a deep dive in Astro Content.

    TypeScript setup

    It's OK to use an absolute path, so you don't have to do tedious relative imports:

    import { get } from '../../content';
    // Versus:
    import { get } from '/content';

    Astro / Vite resolve absolute paths from project root.
    That's cool, but TypeScript language server (in your IDE) will likely break, while showing red squiggles 🀨.

    A very simple fix is adding this to your tsconfig.json > compilerOptions.paths:

    {
      "compilerOptions": {
        // …
        "paths": {
          // Make TS happy with absolute path
          "/content": ["./content"]
        }
      }
    }

    Development

    Setup

    Note: pnpm is the package manager of choice for developing this mono-repo.
    macOS / Node >= 17 is the most tested environment. Please note that end-user can use anything recommended for a typical Astro project while using Astro Content distributables.

    git clone git@github.com:JulianCataldo/astro-content.git
    cd astro-content
    
    pnpm -r i
    
    # β€”β€”β€”β€” Watch / build mono-repo. (turbo)
    pnpm run dev
    
    # β€”β€”β€”β€” Doc. website (astro)
    cd docs && pnpm run dev

    Packages

    Role Notes Name Artefact
    Integration (Entrypoint) Extends Astro / Vite capabilities astro-content NPM
    Server Data handlers, API provider, helpers generator @astro-content/server NPM
    Command line Project setups and content manipulation @astro-content/cli NPM
    Web app (Optional) Full-fledge content editor / monitor @astro-content/gui NPM
    TypeScript typings Internal types for development use @astro-content/types NPM
    Docs (Private) Using and demonstrating all tools above astro-content.netlify.app
    Demo (Clonable) Minimal boilerplate ./demo

    @astro-content/* are all internal dependencies of the main astro-content integration package, which act as a bridge for them.
    Web GUI can be opted out by user settings.

    Deployment environments

    Branch Description Deployment URL
    Feature (<feat_branch>) Preview experiments or future additions in isolation. [branch]--astro-content.netlify.app/__content
    Production (master) Stable release. astro-content.netlify.app/__content
    πŸ†•Β Β Next! (develop) All future features. develop--astro-content.netlify.app/__content

    πŸ”—Β Β JulianCataldo.com