@ima/cli
Version:
IMA.js CLI tool to build, develop and work with IMA.js applications.
97 lines (96 loc) • 4.06 kB
TypeScript
import { Environment } from '@ima/core';
import { Configuration, RuleSetRule, RuleSetUseItem } from 'webpack';
import { ImaConfigurationContext, ImaConfig, ImaCliArgs } from '../types';
export declare const IMA_CONF_FILENAME = "ima.config.js";
/**
* Helper for finding rules with given loader in webpack config.
*/
export declare function findRules(config: Configuration, testString: string, loader?: string): RuleSetRule[] | RuleSetUseItem[];
/**
* 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']): Environment;
/**
* 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 {ImaCliArgs} args Parsed CLI and build arguments.
* @param {ImaConfig} imaConfig Loaded ima config.
* @returns {Promise<Configuration[]>}
*/
export declare function createWebpackConfig(args: ImaCliArgs, imaConfig: ImaConfig): Promise<Configuration[]>;
/**
* Extracts major.minor version string of currently resolved
* core-js from node_modules.
*/
export declare function getCurrentCoreJsVersion(): Promise<any>;