CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-tarojs--service

Core service layer for the Taro cross-platform framework providing plugin management, configuration handling, and platform abstraction capabilities

Pending
Overview
Eval results
Files

configuration.mddocs/

Configuration Management

Configuration management system for Taro projects providing local project configuration and global Taro settings with validation and environment support.

Capabilities

Config Class

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');

Configuration Initialization

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:

  • Loads project configuration from config/index.(js|ts) file
  • Loads global Taro configuration from user home directory
  • Supports function-based configuration that receives merge utility and environment
  • Sets isInitSuccess to true if configuration loads successfully

Global Configuration

Manage 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:

  • Loaded from ~/.taro/config.json
  • Supports command-specific plugin filtering
  • Gracefully handles missing or invalid global config files
  • Provides visual feedback during loading process

Platform Configuration

Generate 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:

  • Entry point configuration with resolved file paths
  • Platform-specific settings and overrides
  • Build tool configuration (compiler, cache, etc.)
  • Asset handling configuration (copy, alias, etc.)

Usage Example:

// Get WeChat mini-program configuration
const weappConfig = config.getConfigWithNamed('weapp', 'mini');

// Get H5 configuration  
const h5Config = config.getConfigWithNamed('h5', 'h5');

Configuration File Structure

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;
};

Types

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

docs

configuration.md

index.md

platform-abstraction.md

plugin-context.md

plugin-system.md

tile.json