UNPKG

@ima/cli

Version:

IMA.js CLI tool to build, develop and work with IMA.js applications.

97 lines (96 loc) 4.06 kB
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>;