Skip to content

Commit

Permalink
wip: asset resolution and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Dec 21, 2020
1 parent 8fc4c84 commit 7b1b5a0
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 21 deletions.
4 changes: 2 additions & 2 deletions packages/plugin-vue/src/script.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { compileScript, SFCDescriptor, SFCScriptBlock } from '@vue/compiler-sfc'
import { ResolvedOptions } from '.'
import { getTemplateCompilerOptions } from './template'
import { resolveTemplateCompilerOptions } from './template'

// ssr and non ssr builds would output different script content
const clientCache = new WeakMap<SFCDescriptor, SFCScriptBlock | null>()
Expand Down Expand Up @@ -41,7 +41,7 @@ export function resolveScript(
id: descriptor.id,
isProd: options.isProduction,
inlineTemplate: !options.devServer,
templateOptions: getTemplateCompilerOptions(descriptor, options)
templateOptions: resolveTemplateCompilerOptions(descriptor, options)
})

cacheToUse.set(descriptor, resolved)
Expand Down
52 changes: 33 additions & 19 deletions packages/plugin-vue/src/template.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export function compile(
) {
const filename = descriptor.filename
const result = compileTemplate({
...getTemplateCompilerOptions(descriptor, options)!,
...resolveTemplateCompilerOptions(descriptor, options)!,
source: code
})

Expand All @@ -84,7 +84,7 @@ export function compile(
return result
}

export function getTemplateCompilerOptions(
export function resolveTemplateCompilerOptions(
descriptor: SFCDescriptor,
options: ResolvedOptions
): Omit<SFCTemplateCompileOptions, 'source'> | undefined {
Expand All @@ -97,26 +97,40 @@ export function getTemplateCompilerOptions(
const { id, filename, cssVars } = descriptor

let transformAssetUrls = options.template?.transformAssetUrls
// inject vite base so that @vue/compiler-sfc can transform relative paths
// directly to absolute paths without incurring an extra import request
if (filename.startsWith(options.root)) {
// TODO account for vite base config
const base =
'/' + slash(path.relative(options.root, path.dirname(filename)))
if (transformAssetUrls && typeof transformAssetUrls === 'object') {
// presence of array fields means this is raw tags config
if (
Object.keys(transformAssetUrls).some((key) =>
Array.isArray((transformAssetUrls as any)[key])
)
) {
transformAssetUrls = { base, tags: transformAssetUrls } as any
} else {
transformAssetUrls = { ...transformAssetUrls, base }
let assetUrlOptions
if (options.devServer) {
// during dev, inject vite base so that @vue/compiler-sfc can transform
// relative paths directly to absolute paths without incurring an extra import
// request
if (filename.startsWith(options.root)) {
assetUrlOptions = {
base: '/' + slash(path.relative(options.root, path.dirname(filename)))
}
}
} else {
// build: force all asset urls into import requests so that they go through
// the assets plugin for asset registration
assetUrlOptions = {
includeAbsolute: true
}
}

if (transformAssetUrls && typeof transformAssetUrls === 'object') {
// presence of array fields means this is raw tags config
if (
Object.keys(transformAssetUrls).some((key) =>
Array.isArray((transformAssetUrls as any)[key])
)
) {
transformAssetUrls = {
...assetUrlOptions,
tags: transformAssetUrls as any
}
} else {
transformAssetUrls = { base }
transformAssetUrls = { ...transformAssetUrls, ...assetUrlOptions }
}
} else {
transformAssetUrls = assetUrlOptions
}

return {
Expand Down
1 change: 1 addition & 0 deletions scripts/jestGlobalSetup.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const DIR = path.join(os.tmpdir(), 'jest_playwright_global_setup')

module.exports = async () => {
const browserServer = await chromium.launchServer({
headless: !process.env.VITE_DEBUG_SERVE,
args: process.env.CI
? ['--no-sandbox', '--disable-setuid-sandbox']
: undefined
Expand Down
1 change: 1 addition & 0 deletions scripts/jestPerTestSetup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ beforeAll(async () => {
const srcDir = resolve(playgroundRoot, testName)
tempDir = resolve(__dirname, '../temp', testName)
await fs.copy(srcDir, tempDir, {
dereference: true,
filter(file) {
return !file.includes('__tests__')
}
Expand Down

0 comments on commit 7b1b5a0

Please sign in to comment.