dokee's site

Back

Update Theme

Update astro theme pure to the latest version

Breaking Changes#

v4.0.2-beta#

  • Considering move tools icons to new path like src/assets/tools/, this may help user know which ones are relevant to tools.

  • Change links applyTip to custom array style:

    src/site.config.ts
    export const integ: IntegrationUserConfig = {
      links: {
        applyTip: [
          { name: 'Name', val: theme.title }, 
          { name: 'Desc', val: theme.description || 'Null' },
          { name: 'Link', val: 'https://astro-pure.js.org/' },
          { name: 'Avatar', val: 'https://astro-pure.js.org/favicon/favicon.ico' }
          // You can also add more fields
        ]
      }
    }
    ts
  • Add env BUN_LINK_PKG, set this to true where automatically refer the package astro-pure in path packages/pure instead of node_modules/astro-pure. This may help user to develop the theme or change code for them (may not be recommended for production).

  • Change CSS framework to UnoCSS. Will affect unocss.config.ts & typography classname setting.

v4.0.1-beta#

  • Change svg deliver import to custom import svg element. This will affect using component for ToolSelection. You should change:

    (Optional) Move icons to new path like src/assets/icons/

    Then change using code (default at src/pages/about/index.astro)

    src/pages/about/index.astro
    <ToolSection
      tools={[
        {
          name: 'Arch Linux',
          description: 'Linux Distribution',
          href: 'https://archlinux.org/',
          iconPath: 'archlinux'
          icon: import('@/assets/icons/archlinux.svg?raw') 
        }
      ]},
    />
    
    ts
  • This change import a new component Svg. See User Components #Svg Loader for usage.

v4.0.0-alpha#

  • Move all components, types and utils that are reused to new npm packages astro-pure. Affected components are included in . Import method is also changed:

    import { Button } from '@/components/user'
    import { Button } from 'astro-pure/user'
    ts
  • New format config file src/site.config.ts. There will be zod schema to validate the config file, and use of config will be changed to:

    import { siteConfig } from '@/site-config'
    import config from '@/site-config'
    // Or if you want to use the config that is after processed or transformed
    import config from 'vertual:config'
    ts
  • Built-in astro config supported. package astro-pure will automatically config some integrations like @astrojs/tailwind, @astrojs/mdx, @astrojs/sitemap, also with some rehypePlugins and remarkPlugins.

  • Change search engine to pagefind, mainly because Astro v5 will not allow getting collection data directly from client (that is core working mode of Fuse.js search engine).

  • Change some BaseHead tags config to src/site.config.ts.

v3.1.4#

  • Move config siteConfig.content.typographyProse to integrationConfig.typography.class in src/site.config.ts.

  • Move advanced components to src/components/advanced. Affected components are included in Advanced Components. Import method is also changed:

    import LinkPreview from '@/components/LinkPreview.astro'
    import { LinkPreview } from 'astro-pure/advanced'
    
    <LinkPreview href='https://www.cloudflare.com/' />
    ts
  • Move Substats config to related page src/pages/about/index.astro.

  • Change Github Card component to GithubCard in src/components/advanced. See Advanced Components #Github Card for usage.

  • Move Links Logbook to src/site.config.ts. See Friend Links #Basic Configurations.

v3.1.3#

  • Move user components to src/components/user. Affected components are included in User Components. Import method is also changed:

    import Button from '@/components/Button'
    import { Button } from 'astro-pure/user'
    ts
  • Replace remark-github-blockquote-alert plugin to component Aside. Check User Components #Aside to know how to migrate.

v3.1.2 (pre-release)#

  • Move some configuration items like telegram, walineServelURL to new structure in src/site.config.ts.

v3.1.1#

  • Move the internal parts in the src/utils to src/plugins.
  • Modify the configuration file astro.config.ts to astro.config.mjs.
  • Update ESLint to latest version and migrate configuration file .eslintrc.js to eslint.config.mjs.
  • Modify the prettier.config.js to prettier.config.mjs.

v3.1.0 (pre-release)#

  • Change common content markdown formatter coverImage to heroImage. You need to modify all your markdown files to replace coverImage with heroImage.

v3.0.9#

A stable version.

Pending update…

Update Method#

Rebase#

If you create a new project using fork, you can just rebase the theme repository to the latest version.

Merge Manually#

As there’s not the same git history, you might need to merge the theme repository to your project manually.

A soluable way for Windows user is using tool WinMerge.

A filter list here may be helpful:

## This is a directory/file filter template for WinMerge
name: Astro Theme Pure
desc: Diff for Blog v.s. Astro Theme Pure

## Select if filter is inclusive or exclusive
## Inclusive (loose) filter lets through all items not matching rules
## Exclusive filter lets through only items that match to rule
## include or exclude
def: include

## Filters for filenames begin with f:
## Filters for directories begin with d:
## To exclude some of the files that match the f: pattern, specify f!:
## To exclude some of the folders that match the d: pattern, specify d!:
## (Inline comments begin with " ##" and extend to the end of the line)

### Front-end files ###
d: \\\.git$
d: \\node_modules$

# Astro cache
d: \\\.vercel
d: \\\.astro

### Theme dev ###
d: ^\\packages$
d: ^\\preset$
d: ^\\test$
f: ^LICENSE$
f: ^README\.md$
f: ^README-zh-CN\.md$
f: ^CODE_OF_CONDUCT\.md$

# Project
f: ^bun\.lockb$
f: \.code-workspace$
f: ^ignore\.md$

### Astro theme pure ###
# Static
d: ^\\public\\favicon$
f: ^public\\links\.json$
f: ^public\\images\\social-card\.png$

# Assets
f: ^src\\assets\\avatar\.png$
d: ^\\src\\assets\\projects$
d: ^\\src\\assets\\tools$

# Content
d: ^\\src\\content\\blog$
d: ^\\src\\content\\docs$
d: ^\\src\\pages\\docs$
f: ^src\\pages\\terms\\.*\.md$

### Blog ###
# Your own files
diff