UNPKG

quasqui

Version:

The meta-framework suite designed from scratch for frontend-focused modern web development.

54 lines (48 loc) 1.39 kB
import path from 'path'; import webpack from 'webpack'; import { createFsFromVolume, Volume } from 'memfs'; import { APILoaderOptions } from '../src/loader'; // globby needs setImmediate // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error global.setImmediate = setTimeout; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error global.clearImmediate = clearTimeout; export const compiler = (fixture: string, options: APILoaderOptions) => { // eslint-disable-next-line @typescript-eslint/no-shadow const compiler = webpack({ context: __dirname, entry: fixture, target: 'node', output: { path: path.resolve(__dirname), filename: 'bundle.js', }, module: { rules: [ { test: /\.ts$/, use: { loader: path.resolve(__dirname, '../src/loader.ts'), options, }, }, ], }, resolve: { extensions: ['.ts', '...'] }, }); compiler.outputFileSystem = createFsFromVolume(new Volume()); compiler.outputFileSystem.join = path.join.bind(path); return new Promise<webpack.Stats | undefined>((resolve, reject) => { compiler.run((err, stats) => { if (err) { reject(err); } if (stats?.hasErrors()) { reject(stats.toJson().errors); } resolve(stats); }); }); };