Merge branch 'main' into feat/offline-search

pull/2110/head
Guillaume Chau 3 years ago committed by GitHub
commit d0c8352d1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -4,3 +4,4 @@ dist
pnpm-lock.yaml
cache
template
temp

@ -1,21 +1,21 @@
import fs from 'fs-extra'
import getPort from 'get-port'
import type { Server } from 'net'
import path from 'path'
import { chromium, type Browser, type Page } from 'playwright-chromium'
import { fileURLToPath } from 'url'
import path from 'path'
import fs from 'fs-extra'
import type { ViteDevServer } from 'vite'
import {
scaffold,
ScaffoldThemeType,
build,
createServer,
serve,
ScaffoldThemeType,
type ScaffoldOptions
scaffold,
serve
} from 'vitepress'
import type { ViteDevServer } from 'vite'
import type { Server } from 'net'
import getPort from 'get-port'
let browser: Browser
let page: Page
let server: ViteDevServer | Server
beforeAll(async () => {
browser = await chromium.connect(process.env['WS_ENDPOINT']!)
@ -29,30 +29,57 @@ afterAll(async () => {
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), 'temp')
async function testVariation(options: ScaffoldOptions) {
fs.removeSync(root)
scaffold({
...options,
root
})
const themes = [
ScaffoldThemeType.Default,
ScaffoldThemeType.DefaultCustom,
ScaffoldThemeType.Custom
]
const usingTs = [false, true]
let server: ViteDevServer | Server
const port = await getPort()
const variations = themes.flatMap((theme) =>
usingTs.map((useTs) => ({ theme, useTs }))
)
async function goto(path: string) {
await page.goto(`http://localhost:${port}${path}`)
await page.waitForSelector('#app div')
}
beforeEach(async () => {
fs.removeSync(root)
})
if (process.env['VITE_TEST_BUILD']) {
await build(root)
server = (await serve({ root, port })).server
afterEach(async () => {
if ('ws' in server) {
await server.close()
} else {
server = await createServer(root, { port })
await server!.listen()
await new Promise<void>((resolve, reject) => {
server.close((error) => (error ? reject(error) : resolve()))
})
}
fs.removeSync(root)
})
test.each(variations)(
'$theme (TypeScript: $useTs)',
async ({ theme, useTs }) => {
scaffold({
root,
theme,
useTs,
injectNpmScripts: false
})
const port = await getPort()
async function goto(path: string) {
await page.goto(`http://localhost:${port}${path}`)
await page.waitForSelector('#app div')
}
if (process.env['VITE_TEST_BUILD']) {
await build(root)
server = (await serve({ root, port })).server
} else {
server = await createServer(root, { port })
await server!.listen()
}
try {
await goto('/')
expect(await page.textContent('h1')).toMatch('My Awesome Project')
@ -66,33 +93,5 @@ async function testVariation(options: ScaffoldOptions) {
await page.click('a[href="/api-examples.html"]')
await page.waitForSelector('pre code')
expect(await page.textContent('h1')).toMatch('Runtime API Examples')
} finally {
fs.removeSync(root)
if ('ws' in server) {
await server.close()
} else {
await new Promise<void>((resolve, reject) => {
server.close((error) => (error ? reject(error) : resolve()))
})
}
}
}
const themes = [
ScaffoldThemeType.Default,
ScaffoldThemeType.DefaultCustom,
ScaffoldThemeType.Custom
]
const usingTs = [false, true]
for (const theme of themes) {
for (const useTs of usingTs) {
test(`${theme}${useTs ? ` + TypeScript` : ``}`, () =>
testVariation({
root: '.',
theme,
useTs,
injectNpmScripts: false
}))
}
}
)

@ -3,7 +3,7 @@
"version": "1.0.0-alpha.60",
"description": "Vite & Vue powered static site generator",
"type": "module",
"packageManager": "pnpm@7.29.1",
"packageManager": "pnpm@7.29.3",
"main": "dist/node/index.js",
"types": "types/index.d.ts",
"exports": {
@ -67,10 +67,12 @@
"format": "prettier --check --write .",
"format-fail": "prettier --check .",
"check": "run-s format-fail build test",
"test": "run-p --aggregate-output test-unit test-e2e test-e2e-build test-init",
"test": "run-p --aggregate-output test-unit test-e2e-seq test-init-seq",
"test-unit": "vitest run -r __tests__/unit",
"test-e2e-seq": "run-s test-e2e test-e2e-build",
"test-e2e": "vitest run -r __tests__/e2e",
"test-e2e-build": "VITE_TEST_BUILD=1 pnpm test-e2e",
"test-init-seq": "run-s test-init test-init-build",
"test-init": "vitest run -r __tests__/init",
"test-init-build": "VITE_TEST_BUILD=1 pnpm test-init",
"debug-e2e": "DEBUG=1 vitest -r __tests__/e2e",
@ -89,12 +91,12 @@
"dependencies": {
"@docsearch/css": "^3.3.3",
"@docsearch/js": "^3.3.3",
"@vitejs/plugin-vue": "^4.0.0",
"@vitejs/plugin-vue": "^4.1.0",
"@vue/devtools-api": "^6.5.0",
"@vueuse/core": "^9.13.0",
"body-scroll-lock": "4.0.0-beta.0",
"shiki": "^0.14.1",
"vite": "^4.1.4",
"vite": "^4.2.0",
"vue": "^3.2.47"
},
"devDependencies": {
@ -125,24 +127,24 @@
"@types/markdown-it-emoji": "^2.0.2",
"@types/micromatch": "^4.0.2",
"@types/minimist": "^1.2.2",
"@types/node": "^18.15.0",
"@types/prompts": "^2.4.2",
"@types/node": "^18.15.3",
"@types/prompts": "^2.4.3",
"chokidar": "^3.5.3",
"compression": "^1.7.4",
"conventional-changelog-cli": "^2.2.2",
"cross-spawn": "^7.0.3",
"debug": "^4.3.4",
"enquirer": "^2.3.6",
"esbuild": "^0.17.11",
"esbuild": "^0.17.12",
"escape-html": "^1.0.3",
"execa": "^7.0.0",
"execa": "^7.1.1",
"fast-glob": "^3.2.12",
"fs-extra": "^11.1.0",
"get-port": "^6.1.2",
"gray-matter": "^4.0.3",
"lint-staged": "^13.2.0",
"lodash.template": "^4.5.0",
"lru-cache": "^7.18.3",
"lru-cache": "^8.0.3",
"markdown-it": "^13.0.1",
"markdown-it-anchor": "^8.6.7",
"markdown-it-attrs": "^4.1.6",
@ -171,8 +173,8 @@
"simple-git-hooks": "^2.8.1",
"sirv": "^2.0.2",
"supports-color": "^9.3.1",
"typescript": "^5.0.0",
"vitest": "^0.29.2",
"typescript": "^5.0.2",
"vitest": "^0.29.3",
"vue-tsc": "^1.3.2",
"wait-on": "^7.0.1"
},

File diff suppressed because it is too large Load Diff

@ -97,7 +97,7 @@ export async function highlight(
if (lang) {
const langLoaded = highlighter.getLoadedLanguages().includes(lang as any)
if (!langLoaded && lang !== 'ansi') {
if (!langLoaded && lang !== 'ansi' && lang !== 'txt') {
logger.warn(
c.yellow(
`\nThe language '${lang}' is not loaded, falling back to '${

@ -128,7 +128,7 @@ export async function createVitePressPlugin(
},
optimizeDeps: {
// force include vue to avoid duplicated copies when linked + optimized
include: ['vue'],
include: ['vue', '@vue/devtools-api'],
exclude: ['@docsearch/js', 'vitepress']
},
server: {

Loading…
Cancel
Save