@ima/cli
Version:
IMA.js CLI tool to build, develop and work with IMA.js applications.
92 lines (91 loc) • 3.79 kB
TypeScript
import { ParsedEnvironment } from '@ima/core';
import { MultiConfiguration } from 'webpack';
import { ImaConfigurationContext, ImaConfig, ImaCliArgs } from '../../types';
export declare const IMA_CONF_FILENAME = "ima.config.js";
/**
* Loads application IMA.js environment from server/config/environment.js
*
* @param {ImaCliArgs['rootDir']} rootDir Application root directory
* @returns {Environment} Loaded environment
*/
export declare function resolveEnvironment(rootDir?: ImaCliArgs['rootDir']): ParsedEnvironment;
/**
* Returns polyfill entry point for current es version if the file exists.
* The function looks for app/polyfill.js and app/polyfill.es.js files.
*
* @param {ImaConfigurationContext} ctx Current configuration context.
* @returns {Record<string, string>} Entry object or empty object.
*/
export declare function createPolyfillEntry(ctx: ImaConfigurationContext): Record<string, string>;
/**
* Creates hmr dev server configuration from provided contexts
* and arguments with this priority args -> ctx -> imaConfig -> [defaults].
*/
export declare function createDevServerConfig({ args, ctx, imaConfig, }: {
args?: ImaCliArgs;
ctx?: ImaConfigurationContext;
imaConfig: ImaConfig;
}): {
port: number;
hostname: string;
publicUrl: string;
};
/**
* Creates hash representing current webpack environment.
*
* @param {ImaConfigurationContext} ctx Current configuration context.
* @param {ImaConfig} imaConfig ima configuration
* @returns {string}
*/
export declare function createCacheKey(ctx: ImaConfigurationContext, imaConfig: ImaConfig, additionalData?: {}): string;
/**
* Requires imaConfig from given root directory (default to cwd).
*
* @param {string} [rootDir=process.cwd()] App root directory.
* @returns {ImaConfig | null} Config or null in case the config file doesn't exits.
*/
export declare function requireImaConfig(rootDir?: string): ImaConfig | null;
/**
* Resolves ima.config.js from rootDir base path with DEFAULTS.
*
* @param {ImaCliArgs} args CLI args.
* @returns {Promise<ImaConfig>} Ima config or empty object.
*/
export declare function resolveImaConfig(args: ImaCliArgs): Promise<ImaConfig>;
/**
* Takes care of cleaning build directory and node_modules/.cache
* directory based on passed cli arguments.
*/
export declare function cleanup(args: ImaCliArgs): Promise<void>;
/**
* Runs one of optional ima plugin hooks defined on existing plugins.
*
* @param {ImaCliArgs} args Parsed CLI and build arguments.
* @param {ImaConfig} imaConfig Loaded ima config.
* @param hook
*/
export declare function runImaPluginsHook(args: ImaCliArgs, imaConfig: ImaConfig, hook: 'preProcess' | 'postProcess'): Promise<void>;
/**
* Generate configuration contexts for given array of configuration names.
* Contexts are generated based on ima.config.js file and CLI arguments.
*
* @param {ImaConfigurationContext['name'][]} configurationNames
* @param {ImaCliArgs} args
* @param {ImaConfig} imaConfig
* @returns {ImaConfigurationContext[]}
*/
export declare function createContexts(configurationNames: ImaConfigurationContext['name'][], args: ImaCliArgs, imaConfig: ImaConfig): ImaConfigurationContext[];
/**
* Creates webpack configurations contexts from current config and cli args.
* Additionally it applies all existing configuration overrides from cli plugins
* and app overrides in this order cli -> plugins -> app.
*
* @param args Parsed CLI and build arguments.
* @param imaConfig Loaded ima config.
*/
export declare function createWebpackConfig(args: ImaCliArgs, imaConfig: ImaConfig): Promise<MultiConfiguration>;
/**
* Extracts major.minor version string of currently resolved
* core-js from node_modules.
*/
export declare function getCurrentCoreJsVersion(): Promise<any>;