-
Notifications
You must be signed in to change notification settings - Fork 39
feat: web builder #1541
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: web builder #1541
Conversation
e1b3ba4 to
4275c56
Compare
4275c56 to
68fb628
Compare
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
ff44fbc to
6819558
Compare
6819558 to
c440fe5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces a comprehensive static site builder feature to Elide, enabling users to create and deploy static websites using Markdown, HTML, CSS, TypeScript, and other web technologies. The implementation includes build tooling, a development server, and integration with Cloudflare Workers for deployment.
- Adds
StaticSiteartifact type with support for multiple content formats and asset processing - Implements static site build pipeline with markdown rendering, CSS/SCSS compilation, and JavaScript/TypeScript bundling
- Includes development server with live reload, compression, and Chrome DevTools integration
- Adds browser compatibility configuration through
BrowsersAPI with Browserslist support
Reviewed Changes
Copilot reviewed 99 out of 112 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
packages/tooling/src/main/kotlin/elide/tooling/web/Browsers.kt |
New API for browser compatibility specifications using Browserslist format |
packages/tooling/src/main/kotlin/elide/tooling/project/manifest/ElidePackageManifest.kt |
Added StaticSite artifact type and DevServerSettings configuration |
packages/tooling/src/main/kotlin/elide/tooling/project/SourceSet.kt |
Extended source set language support for web assets (HTML, CSS, Markdown, etc.) |
project/website/ |
Example static site project demonstrating the new web builder capabilities |
packages/cli/src/projects/web-static-worker/ |
Sample static site project with Cloudflare Workers deployment |
packages/tooling/src/main/kotlin/elide/tooling/project/SourceSetFactory.kt
Show resolved
Hide resolved
bb80230 to
9713bc6
Compare
feat: add `MdxBuilder` and use it from `Markdown` test: improve testing for `Markdown` chore: add `mdxjs` crate and call into it from jni chore: add md jni calls to reachability metadata Signed-off-by: Sam Gammon <sam@elide.dev>
feat(cli): static site manifest configurations feat(tooling): add static site configurations feat(builder): add static site build contributor feat(builder): markdown, html, css build support feat(builder): ability to easily build archives test(builder): amend markdown tests for compat test(builder): add test for parsing frontmatter chore: add `web-static-worker` sample chore: configure static worker sample chore: deploy static worker sample Signed-off-by: Sam Gammon <sam@elide.dev>
feat: match against, and then rewrite, markdown links feat: ability to provide a link renderer to md build Signed-off-by: Sam Gammon <sam@elide.ventures>
feat(builder): parse yaml with snakeyaml for frontmatter test(builder): add test for parsing yaml frontmatter chore(builder): drop/cleanup manual frontmatter parser Signed-off-by: Sam Gammon <sam@elide.dev>
feat(builder): support for copying static assets feat(builder): support for global stylesheets feat(builder): support for global scripts feat(builder): support for site `prefix` feat(tooling): scripts/stylesheets for `staticSite` block in `elide.pkl` fix(tooling): bug with absolute copied/written paths for static sites chore: add stylesheet and favicon to web static worker sample Signed-off-by: Sam Gammon <sam@elide.dev>
feat(builder): add simple js builder support feat(builder): add simple ts builder support fix(builder): markdown link rendering and prefix chore: add js and ts files to example project chore: add elide types to sample deps Signed-off-by: Sam Gammon <sam@elide.dev>
feat(builder): support `scss` flag in `web` crate feat(builder): invoke `grass` crate and pass to `lightningcss` fix(builder): extensions for compiled css files Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
feat(builder): jvm-side browserslist container
feat(builder): parse/load browserslist config
feat(builder): add `web.browsers { ... }` block
feat(builder): use project browsers for css builds
test(builder): test for browserslist css render
test(builder): test for browserlist builder
Signed-off-by: Sam Gammon <sam@elide.dev>
feat(builder): add support for `styles` frontmatter property feat(builder): add support for `scripts` frontmatter property Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
feat(builder): support for static site server feat(cli): wire in static site server feat(cli): support generic static servers in cwd Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
feat(builder): add html builder and minify settings feat(builder): integrate html builder into md builder test(builder): tests for html builder feat(builder): web crate support for html builder chore: initial structure for `media` crate Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
feat(builder): send workspace information to chrome, when in dev mode feat(builder): wiring for server-side autoreload triggers chore: update `tooling` api pins Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
feat(builder): load media crate and use it to compress images feat(builder): implement `Image` facade on jvm test(builder): tests for compressing pngs and jpgs Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
9713bc6 to
4c96635
Compare
5459ac5 to
dc9a651
Compare
Signed-off-by: Sam Gammon <sam@elide.dev>
dc9a651 to
af6afa2
Compare
Summary
Adds a (very simple) static site builder feature to Elide. Supports Markdown, MDX, HTML, and CSS. For now, everything builds file-wise, i.e. each source file is expected to be compiled into exactly-one target file.
staticSiteartifact inelide.pklStaticSiteContributorto processstaticSiteblocksMarkdown,CssBuilder, et albrowsers { ... }block--hostand--port)elide.pkl(dev.server { ... })Usage
The user declares a
staticSitewithin theirelide.pkl, and then provides a tree of sources.elide.pklwrangler.tomlsrc/index.mdterminalTip
Deployed sample is available at
static-worker.samples.elide.dev.Changelog