资源与样式

sitelo 构建在 Vite 之上,因此前端 JavaScript 和 CSS 会被自动编译。把脚本和样式放在 src/ 下(例如 src/jssrc/css),在 HTML 中用根相对 URL 引用它们,剩下的交给 sitelo:TypeScript、CSS 导入、打包与压缩。

项目结构

页面和资源共用 src/。像 js/css/ 这样的目录只是约定,不是要求 —— sitelo 在意的是你的 HTML 引用了什么,而不是目录叫什么。

my-site/
  src/
    index.ht.js          # 页面 — 返回 HTML
    css/
      styles.css         # 从 HTML 引用 → 打包
    js/
      main.js            # 从 HTML 引用 → 打包
      counter.ts         # 被 main.js 导入 → 一并打包
    lib/
      posts.js           # 仅在 data() 中使用 → 永不发布
  public/
    favicon.ico          # 原样复制

在 HTML 中引用资源

用根相对路径引用文件。正是 <script type="module"><link rel="stylesheet"> 告诉 sitelo 把该文件纳入构建:

import { html, head, title, link, script, body, h1, button } from 'javascript-to-html'

export default () =>
  html({ lang: 'zh' },
    head(
      title('我的网站'),
      link({ rel: 'stylesheet', href: '/css/styles.css' }),
      script({ type: 'module', src: '/js/main.js' }),
    ),
    body(
      h1('你好'),
      button({ id: 'count' }, '0'),
    ),
  )
import { createCounter } from './counter.ts'

const button = document.querySelector('#count')
const next = createCounter()

button.addEventListener('click', () => {
  button.textContent = String(next())
})
@import './tokens.css';

body {
  font-family: system-ui, sans-serif;
  margin: 0;
  padding: 2rem;
}

Vite 会编译什么

需要 PostCSS、Sass 或其他 Vite 插件?把它们加到 sitelo.config.jsvite 之下。

默认零 JS

缺失资源校验

如果 <script src> 或样式表的 href 指向一个在 src/public/ 中都不存在的文件,构建就会失败。更想只收到一条警告?

export default {
  missingAssets: 'warn',
}