Skip to content

Commit

Permalink
Merge branch 'main' into fix/source-maps
Browse files Browse the repository at this point in the history
  • Loading branch information
sheremet-va committed Nov 1, 2022
2 parents 7b349ec + b574a94 commit 1b83ebc
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 13 deletions.
3 changes: 3 additions & 0 deletions packages/vite-node/src/hmr/hmr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,11 @@ export async function handleMessage(runner: ViteNodeRunner, emitter: HMREmitter,
})
break
case 'full-reload':
notifyListeners(runner, 'vite:beforeFullReload', payload)
reload(runner, files)
break
case 'prune':
notifyListeners(runner, 'vite:beforePrune', payload)
payload.paths.forEach((path) => {
const fn = maps.pruneMap.get(path)
if (fn)
Expand Down Expand Up @@ -277,6 +279,7 @@ export function createHotContext(
},

invalidate() {
notifyListeners(runner, 'vite:invalidate', { path: ownerPath })
return reload(runner, files)
},

Expand Down
16 changes: 3 additions & 13 deletions packages/vite-node/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,21 +58,11 @@ export function pathFromRoot(root: string, filename: string) {
return filename

const relativePath = relative(root, filename)
// foo.js -> /foo.js
if (!relativePath.startsWith('/') && !relativePath.startsWith('.'))
return `/${relativePath}`

let index = 0
for (const char of relativePath) {
// ../../foo.js
// ^ returns from here -> /foo.js
if (char !== '.' && char !== '/')
return relativePath.slice(index - 1)
const segments = relativePath.split('/')
const startIndex = segments.findIndex(segment => segment !== '..' && segment !== '.')

index++
}

return relativePath
return `/${segments.slice(startIndex).join('/')}`
}

export function toFilePath(id: string, root: string): string {
Expand Down
40 changes: 40 additions & 0 deletions test/vite-node/test/utils.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { describe, expect, test } from 'vitest'
import { pathFromRoot } from 'vite-node/utils'

describe('vite-node utils', () => {
test('usual path from root returns correct path', () => {
const root = '/Users/name/project'
const filename = '/Users/name/project/test.ts'
expect(pathFromRoot(root, filename)).toBe('/test.ts')
})

test('correct path when file and directory share a name', () => {
const root = '/Users/name/project/test'
const filename = '/Users/name/project/test/test/test.ts'
expect(pathFromRoot(root, filename)).toBe('/test/test.ts')
})

test('correct path for node builtins', () => {
const root = '/Users/name/project'
const filename = 'fs'
expect(pathFromRoot(root, filename)).toBe('fs')
})

test('correct path when relative path has back symbols', () => {
const root = '/Users/name/project'
const filename = '/Users/name/project/../test/test.ts'
expect(pathFromRoot(root, filename)).toBe('/test/test.ts')
})

test('correct path when name has a dot at the start', () => {
const root = '/Users/name/project'
const filename = '/Users/name/project/.test.ts'
expect(pathFromRoot(root, filename)).toBe('/.test.ts')
})

test('correct path when subfolder has a dot at the start', () => {
const root = '/Users/name/project'
const filename = '/Users/name/project/../.test/test.ts'
expect(pathFromRoot(root, filename)).toBe('/.test/test.ts')
})
})

0 comments on commit 1b83ebc

Please sign in to comment.