mirror of https://github.com/vuejs/core.git
ci: setup windows ci for compiler and SSR tests (#8143)
This commit is contained in:
parent
29da504687
commit
01f43c1741
|
@ -26,11 +26,40 @@ jobs:
|
|||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- run: PUPPETEER_SKIP_DOWNLOAD=1 pnpm install
|
||||
- name: Skip Puppeteer download
|
||||
run: echo "PUPPETEER_SKIP_DOWNLOAD=1" >> $GITHUB_ENV
|
||||
|
||||
- run: pnpm install
|
||||
|
||||
- name: Run unit tests
|
||||
run: pnpm run test-unit
|
||||
|
||||
unit-test-windows:
|
||||
runs-on: windows-latest
|
||||
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
|
||||
- name: Set node version to 18
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Skip Puppeteer download
|
||||
run: echo "PUPPETEER_SKIP_DOWNLOAD=1" >> $env:GITHUB_ENV
|
||||
|
||||
- run: pnpm install
|
||||
|
||||
- name: Run compiler unit tests
|
||||
run: pnpm run test-unit compiler
|
||||
|
||||
- name: Run ssr unit tests
|
||||
run: pnpm run test-unit server-renderer
|
||||
|
||||
e2e-test:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
|
||||
|
@ -72,7 +101,10 @@ jobs:
|
|||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- run: PUPPETEER_SKIP_DOWNLOAD=1 pnpm install
|
||||
- name: Skip Puppeteer download
|
||||
run: echo "PUPPETEER_SKIP_DOWNLOAD=1" >> $GITHUB_ENV
|
||||
|
||||
- run: pnpm install
|
||||
|
||||
- name: Run eslint
|
||||
run: pnpm run lint
|
||||
|
|
|
@ -29,7 +29,8 @@ import {
|
|||
createGetCanonicalFileName,
|
||||
getId,
|
||||
getImportedName,
|
||||
normalizePath
|
||||
normalizePath,
|
||||
joinPaths
|
||||
} from './utils'
|
||||
import { ScriptCompileContext, resolveParserPlugins } from './context'
|
||||
import { ImportBinding, SFCScriptCompileOptions } from '../compileScript'
|
||||
|
@ -38,7 +39,7 @@ import { parse as babelParse } from '@babel/parser'
|
|||
import { parse } from '../parse'
|
||||
import { createCache } from '../cache'
|
||||
import type TS from 'typescript'
|
||||
import path from 'path'
|
||||
import { extname, dirname } from 'path'
|
||||
|
||||
/**
|
||||
* TypeResolveContext is compatible with ScriptCompileContext
|
||||
|
@ -718,7 +719,7 @@ function importSourceToScope(
|
|||
let resolved
|
||||
if (source.startsWith('.')) {
|
||||
// relative import - fast path
|
||||
const filename = normalizePath(path.join(scope.filename, '..', source))
|
||||
const filename = joinPaths(scope.filename, '..', source)
|
||||
resolved = resolveExt(filename, fs)
|
||||
} else {
|
||||
// module or aliased import - use full TS resolution, only supported in Node
|
||||
|
@ -741,9 +742,10 @@ function importSourceToScope(
|
|||
resolved = resolveWithTS(scope.filename, source, fs)
|
||||
}
|
||||
if (resolved) {
|
||||
resolved = normalizePath(resolved)
|
||||
// (hmr) register dependency file on ctx
|
||||
;(ctx.deps || (ctx.deps = new Set())).add(resolved)
|
||||
return fileToScope(ctx, normalizePath(resolved))
|
||||
return fileToScope(ctx, resolved)
|
||||
} else {
|
||||
return ctx.error(
|
||||
`Failed to resolve import source ${JSON.stringify(source)}.`,
|
||||
|
@ -761,8 +763,8 @@ function resolveExt(filename: string, fs: FS) {
|
|||
tryResolve(filename) ||
|
||||
tryResolve(filename + `.ts`) ||
|
||||
tryResolve(filename + `.d.ts`) ||
|
||||
tryResolve(filename + `/index.ts`) ||
|
||||
tryResolve(filename + `/index.d.ts`)
|
||||
tryResolve(joinPaths(filename, `index.ts`)) ||
|
||||
tryResolve(joinPaths(filename, `index.d.ts`))
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -800,7 +802,7 @@ function resolveWithTS(
|
|||
const parsed = ts.parseJsonConfigFileContent(
|
||||
ts.readConfigFile(configPath, fs.readFile).config,
|
||||
parseConfigHost,
|
||||
path.dirname(configPath),
|
||||
dirname(configPath),
|
||||
undefined,
|
||||
configPath
|
||||
)
|
||||
|
@ -870,7 +872,7 @@ function parseFile(
|
|||
content: string,
|
||||
parserPlugins?: SFCScriptCompileOptions['babelParserPlugins']
|
||||
): Statement[] {
|
||||
const ext = path.extname(filename)
|
||||
const ext = extname(filename)
|
||||
if (ext === '.ts' || ext === '.tsx') {
|
||||
return babelParse(content, {
|
||||
plugins: resolveParserPlugins(ext.slice(1), parserPlugins),
|
||||
|
|
|
@ -99,9 +99,12 @@ export function createGetCanonicalFileName(useCaseSensitiveFileNames: boolean) {
|
|||
return useCaseSensitiveFileNames ? identity : toFileNameLowerCase
|
||||
}
|
||||
|
||||
// in the browser build, the polyfill doesn't expose posix, but defaults to
|
||||
// posix behavior.
|
||||
const normalize = (path.posix || path).normalize
|
||||
const windowsSlashRE = /\\/g
|
||||
export function normalizePath(p: string) {
|
||||
// in the browser build, the polyfill doesn't expose posix, but defaults to
|
||||
// posix behavior.
|
||||
return (path.posix || path).normalize(p.replace(windowsSlashRE, '/'))
|
||||
return normalize(p.replace(windowsSlashRE, '/'))
|
||||
}
|
||||
|
||||
export const joinPaths = (path.posix || path).join
|
||||
|
|
Loading…
Reference in New Issue