toastdotdev/toast

pages + directories are a little confusing

Closed this issue · 2 comments

using MDX, I have the following setup:

/
├── content/
│   └── blog/
│       └── some-post.mdx
└── src/
    └── pages/
        └── blog.js

the blog uses sourceMdx:

sourceMdx({
  setDataForSlug,
  directory: './content/blog',
  slugPrefix: '/blog',
})

if I run this, /blog ends up not working in the built site because the blog.js page is created as blog.html, which is overridden by the blog/ directory

the fix for this, I believe, is to generate blog/index.html instead of blog.html. functionally these should be equivalent, but it allows for defining a directory root

without this, I have to create src/pages/blog/index.js and the slug is wierd:

    setDataForSlug('/blog/index', {
      data: {
        posts,
      },
    })

this isn't the end of the world, but it's unintuitive

if I run this, /blog ends up not working in the built site because the blog.js page is created as blog.html, which is overridden by the blog/ directory

I couldn't replicate "not working" here, could you be more specific about what behavior you're seeing and what http server you're using?

It works for me with this site and running npx serve public: https://github.com/ChristopherBiscardi/toast-blog-blog-index-repro/tree/ff671c7197bb4a112732b96922ae950216b4a4eb

I get this output, which serves me blog.html on /blog.

❯ ls -R public 
blog       index.html  styles.css
blog.html  src         web_modules

public/blog:
some-post.html  some-post.js  some-post.json

hmm, looks like it's an http-server thing. my repro doesn't have this problem when I deploy to Netlify https://optimistic-curie-9bbe4e.netlify.app/blog