@alexaegis/workspace-tools
Version:
Tools for working with javascript workspaces
51 lines • 1.71 kB
TypeScript
import { Nullable } from '@alexaegis/common';
import { JsonMatcherFrom } from '@alexaegis/match';
/**
* The archetypical description of a project present in the "archetype" field
* of the package.json. It's not the full description as other package.json
* fields can be read, most notably the "private" field dictates if a package
* is to be published or not. That information is not duplicated.
*
* node-app
* node-lib
* web-svelte-app
* web-svelte-lib
*/
export interface PackageArchetype {
platform?: Nullable<'node' | 'web'>;
/**
* @example 'node' | 'svelte' | 'angular'
*/
framework?: Nullable<string>;
/**
* @example 'ts' | 'js'
*/
language?: Nullable<string>;
kind?: Nullable<'app' | 'lib' | 'fixture'>;
/**
* @example 'vite' | 'rollup'
*/
bundler?: Nullable<string>;
/**
* @example 'vitest' | 'jest' | 'mocha'
*/
testing?: Nullable<string>;
/**
* You can disable specific setup plugins if you wish to skip them in a
* specific package, even if it would otherwise match the rest of the
* archetype.
*
* Like define `["@alexaegis/autotool-plugin-vitest"]` if you don't want it
* to be applied.
*
* Each treated as a RegExp
*/
disabledPlugins?: string[];
}
export type PackageJsonArchetypeMatcher = JsonMatcherFrom<PackageArchetype>;
/**
* This will return names for when you want to denote the archetype in a
* filename: `tsconfig.web-svelte-lib.json` or `tsconfig.node-lib.json`
*/
export declare const getEncodedArchetype: (archetypeMatcher?: PackageJsonArchetypeMatcher | undefined) => string;
//# sourceMappingURL=package-archetype.interface.d.ts.map