@joker.front/cli
Version:
The Next-Generation Front-End Toolchain: Swift, Efficient, and Adaptive.
118 lines (117 loc) • 3.5 kB
TypeScript
import { logger } from "./logger";
import { ServerOptions } from "./server";
import { Plugin } from "./plugin";
import { BuildOptions } from "./build";
import { InternalResolveOptions, ResolveFn, ResolveOptions } from "./plugins/resolve";
import { DepHandler } from "./deps";
import { PackageCache } from "./package";
import { CSSOptions } from "./plugins/css";
export declare const DEFAULT_SERVER_PORT = 5858;
export declare const DEFAULT_WS_PORT = 25679;
export declare const FILE_SUFFIX = "joker";
export declare const ID_PREFIX = "/@id/";
export declare const FS_PREFIX = "/@fs/";
export declare const NULL_BYTE_PLACHOLDER = "__J00J__";
export declare const CLIENT_PLUBLIC_PATH = "/@joker.front/client";
export declare const INTERNAL_REQUEST: string[];
export declare const CLIENT_ENTRY: string;
export declare const CLIENT_DIR: string;
export declare const version: any;
export declare const ESBUILD_MODULES_TARGET: string[];
export declare const DEFAULT_EXTENSIONS: string[];
export declare const DEFAULT_MAIN_FIELDS: string[];
export interface Config {
/**
* Project root directory
* @default process.cwd()
*/
root?: string;
/**
* Public base path when serving in production
* @default '/'
*/
base?: string;
/**
* Execution mode
* - 'server': Run development server only
* - 'build': Build project without starting server
* @default 'server'
*/
command?: "server" | "build";
/**
* Environment mode (corresponds to process.env.NODE_ENV)
* @default 'development'
*/
mode?: string;
/**
* Development server configuration
*/
server?: ServerOptions;
/**
* Build configuration
*/
build?: BuildOptions;
/**
* Cache directory for dependencies and intermediate files
* @default 'node_modules/.joker'
*/
cacheDir?: string;
/**
* Public directory for static assets that are copied directly to output
* Set to false to disable
* @default 'public'
*/
publicDir?: string | false;
/**
* Logging level
* @default 'info'
*/
logLevel?: logger.leve;
/**
* Enable esbuild for faster builds
* @default true
*/
esbuild?: boolean;
/**
* Additional file extensions to treat as assets
*/
assetsInclude?: string[];
/**
* Plugins to extend the build system
*/
plugins?: Plugin[] | Array<Plugin[]>;
/**
* Module resolution options
*/
resolve?: ResolveOptions;
/**
* Global definitions available in source code via import.meta.define
*/
define?: Record<string, any>;
/**
* CSS processing options
*/
css?: CSSOptions;
}
export interface ResolvedConfig extends Required<Omit<Config, "plugins">> {
createResolver: (option: Partial<InternalResolveOptions>) => ResolveFn;
/**
* 引用管理
*/
depHandler: DepHandler;
/**
* package.json 解析缓存
*/
packageCache: PackageCache;
build: Required<BuildOptions>;
configPath?: string;
/**
* packageJson 文件地址
*/
pkgPath?: string;
plugins: Plugin[];
}
export declare function resolveCliConfig(cliConfig: Config, command: Config["command"], configPath?: string | false): Promise<ResolvedConfig>;
export declare function getConfigHash(config: ResolvedConfig): string;
export declare const ASSET_TYPES: string[];
export declare function getClinetImport(config: ResolvedConfig): string;