Core service layer for the Taro cross-platform framework providing plugin management, configuration handling, and platform abstraction capabilities
—
Configuration management system for Taro projects providing local project configuration and global Taro settings with validation and environment support.
Main configuration management class that handles both local project config and global Taro configuration.
/**
* Main configuration management class for Taro projects
*/
class Config {
appPath: string;
configPath: string;
initialConfig: IProjectConfig;
initialGlobalConfig: IProjectConfig;
isInitSuccess: boolean;
disableGlobalConfig: boolean;
constructor(opts: IConfigOptions);
init(configEnv: { mode: string; command: string }): Promise<void>;
initGlobalConfig(command?: string): void;
getConfigWithNamed(platform: string, configName: string): TConfig;
}
interface IConfigOptions {
/** Current command execution directory, or project path for build commands */
appPath: string;
/** Whether to disable global configuration loading */
disableGlobalConfig?: boolean;
}Usage Examples:
import { Config } from "@tarojs/service";
// Basic configuration setup
const config = new Config({ appPath: process.cwd() });
await config.init({ mode: 'development', command: 'build' });
console.log(config.isInitSuccess); // true if config loaded successfully
console.log(config.initialConfig); // Project configuration object
// Get platform-specific configuration
const weappConfig = config.getConfigWithNamed('weapp', 'mini');Initialize configuration with environment-specific settings and command context.
/**
* Initialize configuration with environment and command context
* @param configEnv - Environment configuration containing mode and command
*/
init(configEnv: { mode: string; command: string }): Promise<void>;The init method:
config/index.(js|ts) filemerge utility and environmentisInitSuccess to true if configuration loads successfullyManage global Taro configuration stored in user's home directory.
/**
* Initialize global Taro configuration from user home directory
* @param command - Optional command name to filter plugins
*/
initGlobalConfig(command?: string): void;Global configuration features:
~/.taro/config.jsonGenerate platform-specific configuration by merging base config with platform overrides.
/**
* Get configuration for a specific platform with named config section
* @param platform - Target platform name (e.g., 'weapp', 'h5')
* @param configName - Configuration section name to merge
* @returns Merged configuration object for the platform
*/
getConfigWithNamed(platform: string, configName: string): TConfig;Returns a merged configuration containing:
Usage Example:
// Get WeChat mini-program configuration
const weappConfig = config.getConfigWithNamed('weapp', 'mini');
// Get H5 configuration
const h5Config = config.getConfigWithNamed('h5', 'h5');The configuration file (config/index.js or config/index.ts) can export either an object or a function:
Object Export:
export default {
projectName: 'my-taro-app',
sourceRoot: 'src',
outputRoot: 'dist',
framework: 'react',
compiler: 'webpack5',
plugins: ['@tarojs/plugin-react'],
mini: {
// Mini-program specific config
},
h5: {
// H5 specific config
}
};Function Export:
export default (merge, { command, mode }) => {
const config = {
projectName: 'my-taro-app',
// ... base config
};
if (mode === 'development') {
config.cache = { enable: true };
}
return config;
};interface IProjectConfig {
projectName?: string;
sourceRoot?: string;
outputRoot?: string;
framework?: string;
compiler?: string | { type: string };
plugins?: PluginItem[];
presets?: PluginItem[];
cache?: { enable: boolean };
alias?: Record<string, string>;
copy?: any;
defineConstants?: Record<string, any>;
env?: Record<string, any>;
[platform: string]: any; // Platform-specific configurations
}
type PluginItem = string | [string, any];Install with Tessl CLI
npx tessl i tessl/npm-tarojs--service