0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2025-03-24 23:21:57 -05:00
The web framework for content-driven websites. ️ Star to support our work!
Find a file
Matthew Lee 9aaf58c133
Consistent file hashes (#11628)
* Fix css plugin having inconsistent builds in different environments

Astro's css plugin generates chunk ids that include a hash of all of
the chunk's parent ids.  These ids are currently the absolute file paths
of the parent files.  The generated chunk ids are then inserted into
those pages as import statements.

Because these import statements include a hash based on these absolute
file paths, this causes rollup to generate different hashes for those
pages when a build is run in different environments.  The exact same
project will produce identical assets with different filenames when
built on different machines, or when built from different directories
on the same machine, etc.

To fix this, I've stripped out the working directory of these file paths
before they are added to the hash.  This means that the hash will still
change if the files referencing it chacnge (which I believe is the
intended behavior), but will be stable if the entire project is built
in different environments.

* add changeset

* fixup! use settings.config.root and vite's normalizePath

I've chosen to update the function signature of shortHashedName
to match createSlugger's, so it now accepts the settings object
and returns the actual hashing function.  This way, createSlugger's
function signature doesn't need to update to needlessly accept
an additional argument.

* fixup! remove unused import

* Update .changeset/young-pillows-shave.md

Co-authored-by: Bjorn Lu <bjornlu.dev@gmail.com>

* fixup! use fileURLtoPath

---------

Co-authored-by: Matt Lee <mdlee.md@gmail.com>
Co-authored-by: Bjorn Lu <bjornlu.dev@gmail.com>
2024-08-07 15:55:27 +01:00
.changeset Consistent file hashes (#11628) 2024-08-07 15:55:27 +01:00
.devcontainer chore(deps): update mcr.microsoft.com/devcontainers/javascript-node docker tag to v1 (#10902) 2024-04-30 11:57:42 +08:00
.github fix(deps): update all non-major dependencies (#11522) 2024-07-23 11:43:14 +08:00
.gitpod chore: removed adapters cleanup (#8726) 2023-10-10 19:36:35 +05:30
.vscode
benchmark Fix typos (#10923) 2024-05-01 13:56:38 +08:00
examples sort newest to oldest (#11587) 2024-08-05 13:30:06 +02:00
packages Consistent file hashes (#11628) 2024-08-07 15:55:27 +01:00
scripts Remove tsconfig-resolver from repo (#11642) 2024-08-07 20:10:20 +08:00
.editorconfig chore: upgrade biome and renovate (#10879) 2024-04-26 07:20:59 +01:00
.git-blame-ignore-revs chore: ignore commit (#10181) 2024-02-21 14:13:24 +00:00
.gitignore Improve prefetch behaviour for browsers (#10999) 2024-05-15 21:11:05 +08:00
.gitpod.yml chore: removed adapters cleanup (#8726) 2023-10-10 19:36:35 +05:30
.npmrc Remove resolve package and refactor db & studio exports (#11331) 2024-06-26 11:19:16 +02:00
.nvmrc Fix test runner issues by upgrading nodejs version to 18.17.1 (#10672) 2024-04-04 15:08:25 +08:00
.prettierignore chore: use Biome to format JS files (#10788) 2024-04-17 09:37:22 +01:00
biome.json chore: update biome (#11288) 2024-06-20 07:10:23 +01:00
CONTRIBUTING.md Refactor prerendering chunk handling (#11245) 2024-06-17 14:23:10 +08:00
eslint.config.js Improve regex performance (#11635) 2024-08-07 16:01:23 +08:00
LICENSE Implement new a11y audits for the Dev Toolbar app (#9170) 2023-12-04 11:16:27 -06:00
package.json fix(deps): update all non-major dependencies (#11618) 2024-08-05 16:22:43 +08:00
pnpm-lock.yaml Remove tsconfig-resolver from repo (#11642) 2024-08-07 20:10:20 +08:00
pnpm-workspace.yaml Upgrade turbo (#6911) 2023-04-27 11:39:15 +08:00
prettier.config.js chore: use Biome to format JS files (#10788) 2024-04-17 09:37:22 +01:00
README.md chore: fix CI badge (#11256) 2024-06-14 08:58:56 +01:00
SECURITY.md Update security flow to report on GitHub (#10328) 2024-03-08 09:58:29 +00:00
SECURITY_CONTACTS Update SECURITY_CONTACTS 2024-03-04 09:36:29 -08:00
STYLE_GUIDE.md
tsconfig.base.json feat(assets): Delete original assets unused outside of the optimization pipeline (#8954) 2023-11-08 10:23:23 +01:00
tsconfig.eslint.json feat: use typescript-eslint@v6's reworked configs (#7425) 2023-07-03 20:59:43 +08:00
tsconfig.json chore: add empty tsconfig to prevent TypeScript from crawling (#4937) 2022-09-30 16:02:39 -05:00
turbo.json Update turbo test dependsOn (#10329) 2024-03-05 15:16:55 +00:00

Build the web you want


Astro is a website build tool for the modern web —
powerful developer experience meets lightweight output.

CI License npm version

Install

The recommended way to install the latest version of Astro is by running the command below:

npm create astro@latest

You can also install Astro manually by running this command instead:

npm install --save-dev astro

Looking for help? Start with our Getting Started guide.

Looking for quick examples? Open a starter project right in your browser.

Documentation

Visit our official documentation.

Support

Having trouble? Get help in the official Astro Discord.

Contributing

New contributors welcome! Check out our Contributors Guide for help getting started.

Join us on Discord to meet other maintainers. We'll help you get your first contribution in no time!

Directory

Package Release Notes
astro astro version
create-astro create-astro version
@astrojs/react astro version
@astrojs/preact astro version
@astrojs/solid-js astro version
@astrojs/svelte astro version
@astrojs/vue astro version
@astrojs/lit astro version
@astrojs/node astro version
@astrojs/vercel astro version
@astrojs/cloudflare astro version
@astrojs/partytown astro version
@astrojs/sitemap astro version
@astrojs/tailwind astro version
@astrojs/alpinejs astro version
@astrojs/mdx astro version

CII Best Practices

Several official projects are maintained outside of this repo:

Project Repository
@astrojs/compiler withastro/compiler
Astro Language Tools withastro/language-tools

Sponsors

Astro is free, open source software made possible by these wonderful sponsors.

❤️ Sponsor Astro! ❤️

Astro's sponsors.