summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/pink-beans-cross.md5
-rw-r--r--packages/astro/src/core/util.ts2
-rw-r--r--packages/astro/test/fixtures/non-ascii-path/测试/package.json8
-rw-r--r--packages/astro/test/fixtures/non-ascii-path/测试/src/pages/index.astro1
-rw-r--r--packages/astro/test/non-ascii-path.test.js21
-rw-r--r--pnpm-lock.yaml6
6 files changed, 42 insertions, 1 deletions
diff --git a/.changeset/pink-beans-cross.md b/.changeset/pink-beans-cross.md
new file mode 100644
index 000000000..c56c41b28
--- /dev/null
+++ b/.changeset/pink-beans-cross.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Fix slashes for paths containing non-ASCII characters on Windows
diff --git a/packages/astro/src/core/util.ts b/packages/astro/src/core/util.ts
index 17fbc41a6..07b087493 100644
--- a/packages/astro/src/core/util.ts
+++ b/packages/astro/src/core/util.ts
@@ -126,7 +126,7 @@ export function resolveDependency(dep: string, projectRoot: URL) {
* Windows: C:/Users/astro/code/my-project/src/pages/index.astro
*/
export function viteID(filePath: URL): string {
- return slash(fileURLToPath(filePath) + filePath.search);
+ return slash(fileURLToPath(filePath) + filePath.search).replace(/\\/g, '/');
}
export const VALID_ID_PREFIX = `/@id/`;
diff --git a/packages/astro/test/fixtures/non-ascii-path/测试/package.json b/packages/astro/test/fixtures/non-ascii-path/测试/package.json
new file mode 100644
index 000000000..0c38763be
--- /dev/null
+++ b/packages/astro/test/fixtures/non-ascii-path/测试/package.json
@@ -0,0 +1,8 @@
+{
+ "name": "@test/non-ascii-path",
+ "version": "0.0.0",
+ "private": true,
+ "dependencies": {
+ "astro": "workspace:*"
+ }
+}
diff --git a/packages/astro/test/fixtures/non-ascii-path/测试/src/pages/index.astro b/packages/astro/test/fixtures/non-ascii-path/测试/src/pages/index.astro
new file mode 100644
index 000000000..57b148ac2
--- /dev/null
+++ b/packages/astro/test/fixtures/non-ascii-path/测试/src/pages/index.astro
@@ -0,0 +1 @@
+<h1>测试 OK</h1> \ No newline at end of file
diff --git a/packages/astro/test/non-ascii-path.test.js b/packages/astro/test/non-ascii-path.test.js
new file mode 100644
index 000000000..5fb947e9e
--- /dev/null
+++ b/packages/astro/test/non-ascii-path.test.js
@@ -0,0 +1,21 @@
+import { expect } from 'chai';
+import * as cheerio from 'cheerio';
+import { loadFixture } from './test-utils.js';
+
+describe('Non-ASCII Path Test', () => {
+ let fixture;
+
+ before(async () => {
+ fixture = await loadFixture({ root: './fixtures/non-ascii-path/测试/' });
+ await fixture.build();
+ });
+
+ describe('build', () => {
+ it('Can load page', async () => {
+ const html = await fixture.readFile(`/index.html`);
+ const $ = cheerio.load(html);
+
+ expect($('h1').text()).to.equal('测试 OK');
+ });
+ });
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ace0a7208..4b516d159 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1698,6 +1698,12 @@ importers:
packages/astro/test/fixtures/multiple-renderers/renderers/two:
specifiers: {}
+ packages/astro/test/fixtures/non-ascii-path/测试:
+ specifiers:
+ astro: workspace:*
+ dependencies:
+ astro: link:../../../..
+
packages/astro/test/fixtures/non-html-pages:
specifiers:
astro: workspace:*