90 lines
3.2 KiB
TypeScript
90 lines
3.2 KiB
TypeScript
import type * as esbuild from "./src/esbuild_types.ts";
|
|
|
|
import {
|
|
denoResolverPlugin,
|
|
type DenoResolverPluginOptions,
|
|
} from "./src/plugin_deno_resolver.ts";
|
|
export { denoResolverPlugin, type DenoResolverPluginOptions };
|
|
|
|
import {
|
|
DEFAULT_LOADER,
|
|
denoLoaderPlugin,
|
|
type DenoLoaderPluginOptions,
|
|
} from "./src/plugin_deno_loader.ts";
|
|
export { DEFAULT_LOADER, denoLoaderPlugin, type DenoLoaderPluginOptions };
|
|
|
|
export {
|
|
type EsbuildResolution,
|
|
esbuildResolutionToURL,
|
|
urlToEsbuildResolution,
|
|
} from "./src/shared.ts";
|
|
|
|
/** Options for the {@link denoPlugins} function. */
|
|
export interface DenoPluginsOptions {
|
|
/**
|
|
* Specify which loader to use. By default this will use the `native` loader,
|
|
* unless the `--allow-run` permission has not been given.
|
|
*
|
|
* See {@link denoLoaderPlugin} for more information on the different loaders.
|
|
*/
|
|
loader?: "native" | "portable";
|
|
|
|
/**
|
|
* Specify the path to a deno.json config file to use. This is equivalent to
|
|
* the `--config` flag to the Deno executable. This path must be absolute.
|
|
*
|
|
* If not specified, the plugin will attempt to find the nearest deno.json and
|
|
* use that. If the deno.json is part of a workspace, the plugin will
|
|
* automatically find the workspace root.
|
|
*/
|
|
configPath?: string;
|
|
/**
|
|
* Specify a URL to an import map file to use when resolving import
|
|
* specifiers. This is equivalent to the `--import-map` flag to the Deno
|
|
* executable. This URL may be remote or a local file URL.
|
|
*
|
|
* If this option is not specified, the deno.json config file is consulted to
|
|
* determine what import map to use, if any.
|
|
*/
|
|
importMapURL?: string;
|
|
/**
|
|
* Specify the path to a deno.lock file to use. This is equivalent to the
|
|
* `--lock` flag to the Deno executable. This path must be absolute.
|
|
*
|
|
* If this option is not specified, the deno.json config file is consulted to
|
|
* determine what lock file to use, if any.
|
|
*
|
|
* A lockfile must be present to resolve `jsr:` specifiers with the `portable`
|
|
* loader. When using the `native` loader, a lockfile is not required, but to
|
|
* ensure dependencies are de-duplicated correctly, it is recommended to use a
|
|
* lockfile.
|
|
*/
|
|
lockPath?: string;
|
|
/**
|
|
* Specify how the loader should handle NPM packages. By default and if this
|
|
* option is set to `none`, the loader will use the global cache to resolve
|
|
* NPM packages. If this option is set to `manual`, the loader will use a
|
|
* manually managed `node_modules` directory. If this option is set to `auto`,
|
|
* the loader will use a local `node_modules` directory.
|
|
*
|
|
* If this option is not specified, the deno.json config file is consulted to
|
|
* determine which mode to use.
|
|
*
|
|
* This option is ignored when using the `portable` loader, as the portable
|
|
* loader always uses a manual `node_modules` directory (equivalent of
|
|
* `nodeModulesDir: "manual"`).
|
|
*/
|
|
nodeModulesDir?: "auto" | "manual" | "none";
|
|
}
|
|
|
|
/**
|
|
* A convenience function to enable both the Deno resolver plugin, and Deno
|
|
* loader plugin.
|
|
*/
|
|
export function denoPlugins(opts: DenoPluginsOptions = {}): esbuild.Plugin[] {
|
|
return [
|
|
denoResolverPlugin(opts),
|
|
denoLoaderPlugin(opts),
|
|
];
|
|
}
|