@web/dev-server
Version:
Dev server for web applications
31 lines (27 loc) • 1.01 kB
text/typescript
import { nodeResolve, rollupAdapter, RollupNodeResolveOptions } from '@web/dev-server-rollup';
import { Plugin } from '@web/dev-server-core';
import deepmerge from 'deepmerge';
export function nodeResolvePlugin(
rootDir: string,
preserveSymlinks?: boolean,
userOptions?: RollupNodeResolveOptions,
): Plugin {
const userOptionsObject = typeof userOptions === 'object' ? userOptions : {};
const options: RollupNodeResolveOptions = deepmerge(
{
rootDir,
extensions: ['.mjs', '.js', '.cjs', '.jsx', '.json', '.ts', '.tsx'],
moduleDirectories: ['node_modules', 'web_modules'],
// allow resolving polyfills for nodejs libs
preferBuiltins: false,
},
userOptionsObject,
);
// use user config exportConditions if present. otherwise use ['development']
options.exportConditions = userOptionsObject.exportConditions || ['development'];
return rollupAdapter(
nodeResolve(options),
{ preserveSymlinks },
{ throwOnUnresolvedImport: true },
);
}