Skip to content

Commit 4aa2362

Browse files
authored
Merge branch 'main' into new-router
2 parents aab1ee2 + 634af03 commit 4aa2362

File tree

14 files changed

+202
-38
lines changed

14 files changed

+202
-38
lines changed

e2e/cypress.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { defineConfig } from 'cypress'
22

33
export default defineConfig({
44
e2e: {
5-
baseUrl: 'http://localhost:8080',
5+
baseUrl: 'http://localhost:9080',
66
specPattern: 'tests/**/*.cy.ts',
77
},
88
env: {

e2e/docs/.vuepress/config.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ import { path } from '@vuepress/utils'
66
import { e2eTheme } from './theme/node/e2eTheme.js'
77

88
const E2E_BASE = (process.env.E2E_BASE ?? '/') as '/' | `/${string}/`
9+
const E2E_BUNDLER = process.env.E2E_BUNDLER ?? 'vite'
910

1011
export default defineUserConfig({
1112
base: E2E_BASE,
1213

1314
dest: path.join(__dirname, 'dist', E2E_BASE),
1415

16+
port: 9080,
17+
1518
head: [
1619
['meta', { name: 'foo', content: 'foo' }],
1720
['meta', { name: 'bar', content: 'bar' }],
@@ -40,8 +43,13 @@ export default defineUserConfig({
4043
},
4144
},
4245

43-
bundler:
44-
process.env.E2E_BUNDLER === 'webpack' ? webpackBundler() : viteBundler(),
46+
markdown: {
47+
assets: {
48+
absolutePathPrependBase: E2E_BUNDLER === 'webpack',
49+
},
50+
},
51+
52+
bundler: E2E_BUNDLER === 'webpack' ? webpackBundler() : viteBundler(),
4553

4654
theme: e2eTheme(),
4755

e2e/docs/markdown/images/images.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
![logo-public](/logo.png)
2+
3+
![logo-relative](./logo-relative.png)
150 KB
Loading

e2e/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
"scripts": {
77
"e2e:build": "vuepress-cli build docs --clean-cache --clean-temp",
88
"e2e:build-webpack": "E2E_BUNDLER=webpack pnpm e2e:build",
9-
"e2e:ci:build": "pnpm e2e:build && start-server-and-test e2e:serve http-get://localhost:8088 'pnpm e2e:run --config baseUrl=http://localhost:8088'",
10-
"e2e:ci:dev": "start-server-and-test e2e:dev http-get://127.0.0.1:8080 'pnpm e2e:run --config baseUrl=http://localhost:8080'",
11-
"e2e:clean": "rimraf .vuepress/.temp .vuepress/.cache .vuepress/dist",
9+
"e2e:ci:build": "pnpm e2e:build && start-server-and-test e2e:serve http-get://localhost:9080 e2e:run",
10+
"e2e:ci:dev": "start-server-and-test e2e:dev http-get://127.0.0.1:9080 e2e:run",
11+
"e2e:clean": "rimraf docs/.vuepress/.temp docs/.vuepress/.cache docs/.vuepress/dist",
1212
"e2e:dev": "vuepress-cli dev docs --clean-cache --clean-temp",
1313
"e2e:dev-webpack": "E2E_BUNDLER=webpack pnpm e2e:dev",
1414
"e2e:run": "cypress run",
15-
"e2e:serve": "anywhere -s -h localhost -p 8088 -d docs/.vuepress/dist"
15+
"e2e:serve": "anywhere -s -h localhost -p 9080 -d docs/.vuepress/dist"
1616
},
1717
"dependencies": {
1818
"@vuepress/bundler-vite": "workspace:*",

e2e/tests/markdown/images.cy.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
describe('markdown > images', () => {
2+
it('should render images correctly', () => {
3+
cy.visit('/markdown/images/images.html')
4+
5+
cy.get('.e2e-theme-content img')
6+
.should('have.length', 2)
7+
.each<HTMLImageElement>(([el]) => {
8+
cy.request({ url: el.src, failOnStatusCode: false }).then((res) => {
9+
expect(res.status).to.equal(200)
10+
expect(el.naturalWidth).to.be.greaterThan(0)
11+
})
12+
})
13+
14+
cy.get('.e2e-theme-content img')
15+
.first()
16+
.should('have.attr', 'alt', 'logo-public')
17+
18+
cy.get('.e2e-theme-content img')
19+
.last()
20+
.should('have.attr', 'alt', 'logo-relative')
21+
})
22+
})
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
export * from './mainPlugin.js'
2-
export * from './userConfigPlugin.js'
1+
export * from './vuepressMainPlugin.js'
2+
export * from './vuepressUserConfigPlugin.js'
3+
export * from './vuepressVuePlugin.js'

packages/bundler-vite/src/plugins/mainPlugin.ts renamed to packages/bundler-vite/src/plugins/vuepressMainPlugin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import type { AliasOptions, Connect, Plugin, UserConfig } from 'vite'
99
/**
1010
* The main plugin to compat vuepress with vite
1111
*/
12-
export const mainPlugin = ({
12+
export const vuepressMainPlugin = ({
1313
app,
1414
isBuild,
1515
isServer,

packages/bundler-vite/src/plugins/userConfigPlugin.ts renamed to packages/bundler-vite/src/plugins/vuepressUserConfigPlugin.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import type { ViteBundlerOptions } from '../types.js'
44
/**
55
* A plugin to allow user config to override vite config
66
*/
7-
export const userConfigPlugin = (options: ViteBundlerOptions): Plugin => ({
7+
export const vuepressUserConfigPlugin = (
8+
options: ViteBundlerOptions,
9+
): Plugin => ({
810
name: 'vuepress:user-config',
911
config: () => options.viteOptions ?? {},
1012
})
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import vuePlugin from '@vitejs/plugin-vue'
2+
import type { Plugin } from 'vite'
3+
import type { AssetURLOptions, AssetURLTagConfig } from 'vue/compiler-sfc'
4+
import type { ViteBundlerOptions } from '../types.js'
5+
6+
/**
7+
* Wrapper of official vue plugin
8+
*/
9+
export const vuepressVuePlugin = (options: ViteBundlerOptions): Plugin => {
10+
return vuePlugin({
11+
...options.vuePluginOptions,
12+
template: {
13+
...options.vuePluginOptions?.template,
14+
transformAssetUrls: resolveTransformAssetUrls(options),
15+
},
16+
})
17+
}
18+
19+
/**
20+
* Determine if the given `transformAssetUrls` option is `AssetURLTagConfig`
21+
*/
22+
const isAssetURLTagConfig = (
23+
transformAssetUrls: AssetURLOptions | AssetURLTagConfig,
24+
): transformAssetUrls is AssetURLTagConfig =>
25+
Object.values(transformAssetUrls).some((val) => Array.isArray(val))
26+
27+
/**
28+
* Resolve `template.transformAssetUrls` option from user config
29+
*/
30+
const resolveTransformAssetUrls = (
31+
options: ViteBundlerOptions,
32+
): AssetURLOptions => {
33+
// default transformAssetUrls option
34+
const defaultTransformAssetUrls = { includeAbsolute: true }
35+
36+
// user provided transformAssetUrls option
37+
const { transformAssetUrls: userTransformAssetUrls } =
38+
options.vuePluginOptions?.template ?? {}
39+
40+
// if user does not provide an object as transformAssetUrls
41+
if (typeof userTransformAssetUrls !== 'object') {
42+
return defaultTransformAssetUrls
43+
}
44+
45+
// AssetURLTagConfig
46+
if (isAssetURLTagConfig(userTransformAssetUrls)) {
47+
return {
48+
...defaultTransformAssetUrls,
49+
tags: userTransformAssetUrls,
50+
}
51+
}
52+
53+
// AssetURLOptions
54+
return {
55+
...defaultTransformAssetUrls,
56+
...userTransformAssetUrls,
57+
}
58+
}

0 commit comments

Comments
 (0)