Skip to content

Commit

Permalink
fix: respect transformMode when resolving id (#1506)
Browse files Browse the repository at this point in the history
* fix: consider transform mode when resolving ids

* test: testing resolveId

* chore: cleanup

* chore: use importer to get transform mode when resolving id

* chore: update lockfile
  • Loading branch information
sheremet-va committed Jun 21, 2022
1 parent 9f9216f commit 406f995
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 9 deletions.
3 changes: 2 additions & 1 deletion packages/vite-node/src/server.ts
Expand Up @@ -54,7 +54,8 @@ export class ViteNodeServer {
async resolveId(id: string, importer?: string): Promise<ViteNodeResolveId | null> {
if (importer && !importer.startsWith(this.server.config.root))
importer = join(this.server.config.root, importer)
return this.server.pluginContainer.resolveId(id, importer, { ssr: true })
const mode = (importer && this.getTransformMode(importer)) || 'ssr'
return this.server.pluginContainer.resolveId(id, importer, { ssr: mode === 'ssr' })
}

async fetchModule(id: string): Promise<FetchResult> {
Expand Down
19 changes: 11 additions & 8 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions test/vite-node/package.json
@@ -0,0 +1,13 @@
{
"name": "@vitest/test-vite-node",
"private": true,
"scripts": {
"test": "vitest",
"coverage": "vitest run --coverage"
},
"devDependencies": {
"vite": "^2.9.10",
"vite-node": "workspace:*",
"vitest": "workspace:*"
}
}
31 changes: 31 additions & 0 deletions test/vite-node/test/server.test.ts
@@ -0,0 +1,31 @@
import type { ViteDevServer } from 'vite'
import { ViteNodeServer } from 'vite-node/server'
import { describe, expect, test, vi } from 'vitest'

const mockDevServer = (options: any = {}) => {
return options as ViteDevServer
}

describe('server works correctly', async () => {
test('resolve id considers transform mode', async () => {
const resolveId = vi.fn()

const vnServer = new ViteNodeServer(mockDevServer({
pluginContainer: { resolveId },
config: {
root: '/',
},
}), {
transformMode: {
web: [/web/],
ssr: [/ssr/],
},
})

await vnServer.resolveId('/path', '/web path')
expect(resolveId).toHaveBeenCalledWith('/path', '/web path', { ssr: false })

await vnServer.resolveId('/ssr', '/ssr path')
expect(resolveId).toHaveBeenCalledWith('/ssr', '/ssr path', { ssr: true })
})
})
7 changes: 7 additions & 0 deletions test/vite-node/vitest.config.ts
@@ -0,0 +1,7 @@
import { defineConfig } from 'vitest/config'

export default defineConfig({
test: {
clearMocks: true,
},
})

0 comments on commit 406f995

Please sign in to comment.