Nuxt/packages/webpack/src/utils/mfs.ts

25 lines
719 B
TypeScript
Raw Normal View History

import { join } from 'pathe'
2020-07-02 13:02:35 +00:00
import pify from 'pify'
import { Volume, createFsFromVolume } from 'memfs'
import type { IFs } from 'memfs'
2020-07-02 13:02:35 +00:00
export function createMFS () {
// Create a new volume
const fs = createFsFromVolume(new Volume())
// Clone to extend
const _fs: IFs & { join?(...paths: string[]): string } = { ...fs } as any
2020-07-02 13:02:35 +00:00
// fs.join method is (still) expected by webpack-dev-middleware
// There might be differences with https://github.com/webpack/memory-fs/blob/master/lib/join.js
_fs.join = join
2020-07-02 13:02:35 +00:00
// Used by vue-renderer
_fs.exists = p => Promise.resolve(_fs.existsSync(p))
// @ts-ignore
2020-07-02 13:02:35 +00:00
_fs.readFile = pify(_fs.readFile)
return _fs as IFs & { join?(...paths: string[]): string }
2020-07-02 13:02:35 +00:00
}