summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/new-crews-return.md5
-rw-r--r--packages/astro/src/build.ts15
-rw-r--r--packages/astro/test/astro-assets.test.js25
-rw-r--r--packages/astro/test/fixtures/astro-assets/snowpack.config.json3
-rw-r--r--packages/astro/test/fixtures/astro-assets/src/images/twitter.pngbin0 -> 457 bytes
-rw-r--r--packages/astro/test/fixtures/astro-assets/src/images/twitter@2x.pngbin0 -> 871 bytes
-rw-r--r--packages/astro/test/fixtures/astro-assets/src/images/twitter@3x.pngbin0 -> 1276 bytes
-rw-r--r--packages/astro/test/fixtures/astro-assets/src/pages/index.astro10
8 files changed, 55 insertions, 3 deletions
diff --git a/.changeset/new-crews-return.md b/.changeset/new-crews-return.md
new file mode 100644
index 000000000..f608b9ae1
--- /dev/null
+++ b/.changeset/new-crews-return.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Adds support for image srcset to the build
diff --git a/packages/astro/src/build.ts b/packages/astro/src/build.ts
index 97b616b1f..4fd22f1bf 100644
--- a/packages/astro/src/build.ts
+++ b/packages/astro/src/build.ts
@@ -265,7 +265,7 @@ export function findDeps(html: string, { astroConfig, srcPath }: { astroConfig:
const $ = cheerio.load(html);
- $('script').each((i, el) => {
+ $('script').each((_i, el) => {
const src = $(el).attr('src');
if (src) {
if (isRemote(src)) return;
@@ -283,7 +283,7 @@ export function findDeps(html: string, { astroConfig, srcPath }: { astroConfig:
}
});
- $('link[href]').each((i, el) => {
+ $('link[href]').each((_i, el) => {
const href = $(el).attr('href');
if (href && !isRemote(href) && ($(el).attr('rel') === 'stylesheet' || $(el).attr('type') === 'text/css' || href.endsWith('.css'))) {
const dist = getDistPath(href, { astroConfig, srcPath });
@@ -291,13 +291,22 @@ export function findDeps(html: string, { astroConfig, srcPath }: { astroConfig:
}
});
- $('img[src]').each((i, el) => {
+ $('img[src]').each((_i, el) => {
const src = $(el).attr('src');
if (src && !isRemote(src)) {
pageDeps.images.add(getDistPath(src, { astroConfig, srcPath }));
}
});
+ $('img[srcset]').each((_i, el) => {
+ const srcset = $(el).attr('srcset') || '';
+ const sources = srcset.split(',');
+ const srces = sources.map(s => s.trim().split(' ')[0]);
+ for(const src of srces) {
+ pageDeps.images.add(getDistPath(src, { astroConfig, srcPath }));
+ }
+ });
+
// important: preserve the scan order of deps! order matters on pages
return pageDeps;
diff --git a/packages/astro/test/astro-assets.test.js b/packages/astro/test/astro-assets.test.js
new file mode 100644
index 000000000..c82d34aa6
--- /dev/null
+++ b/packages/astro/test/astro-assets.test.js
@@ -0,0 +1,25 @@
+import { suite } from 'uvu';
+import * as assert from 'uvu/assert';
+import { setup, setupBuild } from './helpers.js';
+
+const Assets = suite('Assets');
+
+setup(Assets, './fixtures/astro-assets');
+setupBuild(Assets, './fixtures/astro-assets');
+
+Assets('srcset is copied in the build', async ({ build, readFile }) => {
+ await build().catch((err) => {
+ assert.ok(!err, 'Error during the build');
+ });
+
+ let oneX = await readFile('/_astro/src/images/twitter.png');
+ assert.ok(oneX, 'built the base image');
+
+ let twoX = await readFile('/_astro/src/images/twitter@2x.png');
+ assert.ok(twoX, 'built the 2x image');
+
+ let threeX = await readFile('/_astro/src/images/twitter@3x.png');
+ assert.ok(threeX, 'build the 3x image');
+});
+
+Assets.run(); \ No newline at end of file
diff --git a/packages/astro/test/fixtures/astro-assets/snowpack.config.json b/packages/astro/test/fixtures/astro-assets/snowpack.config.json
new file mode 100644
index 000000000..8f034781d
--- /dev/null
+++ b/packages/astro/test/fixtures/astro-assets/snowpack.config.json
@@ -0,0 +1,3 @@
+{
+ "workspaceRoot": "../../../../../"
+}
diff --git a/packages/astro/test/fixtures/astro-assets/src/images/twitter.png b/packages/astro/test/fixtures/astro-assets/src/images/twitter.png
new file mode 100644
index 000000000..ad4cae1e9
--- /dev/null
+++ b/packages/astro/test/fixtures/astro-assets/src/images/twitter.png
Binary files differ
diff --git a/packages/astro/test/fixtures/astro-assets/src/images/twitter@2x.png b/packages/astro/test/fixtures/astro-assets/src/images/twitter@2x.png
new file mode 100644
index 000000000..ad89e72c3
--- /dev/null
+++ b/packages/astro/test/fixtures/astro-assets/src/images/twitter@2x.png
Binary files differ
diff --git a/packages/astro/test/fixtures/astro-assets/src/images/twitter@3x.png b/packages/astro/test/fixtures/astro-assets/src/images/twitter@3x.png
new file mode 100644
index 000000000..2fe263f99
--- /dev/null
+++ b/packages/astro/test/fixtures/astro-assets/src/images/twitter@3x.png
Binary files differ
diff --git a/packages/astro/test/fixtures/astro-assets/src/pages/index.astro b/packages/astro/test/fixtures/astro-assets/src/pages/index.astro
new file mode 100644
index 000000000..4ce1d07ef
--- /dev/null
+++ b/packages/astro/test/fixtures/astro-assets/src/pages/index.astro
@@ -0,0 +1,10 @@
+<html lang="en">
+<head><title>This Site</title></head>
+<style>
+ body { background: black; }
+</style>
+<body>
+ <h1>Icons</h1>
+ <img src="/_astro/src/images/twitter.png" srcset="/_astro/src/images/twitter.png 1x, /_astro/src/images/twitter@2x.png 2x, /_astro/src/images/twitter@3x.png 3x" />
+</body>
+</html> \ No newline at end of file