CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-dcloudio--uni-cli-shared

Shared CLI utilities and tools for the uni-app cross-platform development framework

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

build-tools.mddocs/

Build Tools & Configuration

Integration with modern build tools including Vite plugins, ESBuild configurations, PostCSS processing, and optimization utilities for uni-app development across multiple platforms.

Capabilities

Worker Support

Comprehensive worker management and compilation for uni-app projects.

/**
 * Returns current worker file mappings
 * @returns Record mapping worker names to their file paths
 */
function getWorkers(): Record<string, string>;

/**
 * Resolves the workers root directory from project configuration
 * @returns Absolute path to workers directory
 */
function resolveWorkersRootDir(): string;

/**
 * Initializes worker mappings from specified directories
 * @param workersDirs - Array of worker directory paths to scan
 * @param rootDir - Project root directory path
 * @returns Record mapping worker names to their resolved paths
 */
function initWorkers(workersDirs: string[], rootDir: string): Record<string, string>;

/**
 * Vite plugin for uni-app worker support and compilation
 * @returns Vite plugin configuration for worker processing
 */
function uniWorkersPlugin(): Plugin;

/**
 * JavaScript-specific worker support plugin for enhanced JS worker handling
 * @returns Vite plugin for JavaScript worker compilation
 */
function uniJavaScriptWorkersPlugin(): Plugin;

/**
 * Resolves worker directories from manifest configuration
 * @param inputDir - Input directory to scan for worker configurations
 * @returns Array of resolved worker directory paths
 */
function resolveWorkersDir(inputDir: string): string[];

Usage Example:

import { 
  getWorkers,
  initWorkers,
  uniWorkersPlugin,
  resolveWorkersRootDir 
} from "@dcloudio/uni-cli-shared";

// Initialize workers from project directories
const workerDirs = ['./src/workers', './uni_modules/*/workers'];
const rootDir = process.cwd();
const workerMappings = initWorkers(workerDirs, rootDir);

console.log('Available workers:', workerMappings);
// { 'data-processor': '/path/to/src/workers/data-processor.js' }

// Get current worker configuration
const currentWorkers = getWorkers();

// Vite configuration with worker support
export default {
  plugins: [
    uniWorkersPlugin(),
    uniJavaScriptWorkersPlugin()
  ],
  worker: {
    format: 'es',
    plugins: []
  }
};

HBuilderX Integration

Development environment integration with HBuilderX IDE.

/**
 * Creates a Vite plugin for HBuilderX console integration and logging
 * @param method - Console method name for logging (defaults to '__f__')
 * @returns Vite plugin for enhanced HBuilderX development experience
 */
function uniHBuilderXConsolePlugin(method?: string): Plugin;

/**
 * Checks if console logging is enabled in development environment
 * @returns True if console logging should be active
 */
function isEnableConsole(): boolean;

Usage Example:

import { 
  uniHBuilderXConsolePlugin, 
  isEnableConsole 
} from "@dcloudio/uni-cli-shared";

// Vite configuration for HBuilderX development
export default {
  plugins: [
    // Enable HBuilderX console integration
    uniHBuilderXConsolePlugin('__hbx_log__'),
    
    // Conditional logging based on environment
    isEnableConsole() && {
      name: 'dev-logger',
      configureServer(server) {
        server.middlewares.use('/api/log', loggerMiddleware);
      }
    }
  ].filter(Boolean)
};

// Check console status in development workflow
if (isEnableConsole()) {
  console.log('Development logging enabled');
} else {
  console.log('Production mode - logging disabled');
}

Vite Integration

Enhanced Vite plugin ecosystem for uni-app development.

// Vite-specific utilities and plugins (from ./vite module)
// Complete Vite integration API available through main export

ESBuild Configuration

ESBuild integration for fast JavaScript/TypeScript compilation.

// ESBuild utilities and configurations (from ./esbuild module)  
// Complete ESBuild API available through main export

PostCSS Processing

Advanced CSS processing and optimization utilities.

// PostCSS plugins and utilities (from ./postcss module)
// Complete PostCSS API available through main export

Build Process Integration

Development Server Setup

import { 
  uniWorkersPlugin,
  uniHBuilderXConsolePlugin,
  isEnableConsole 
} from "@dcloudio/uni-cli-shared";

// Complete development server configuration
export default defineConfig({
  plugins: [
    vue(),
    
    // Worker support for background processing
    uniWorkersPlugin(),
    uniJavaScriptWorkersPlugin(),
    
    // HBuilderX IDE integration
    uniHBuilderXConsolePlugin(),
    
    // Conditional development plugins
    ...(isEnableConsole() ? [
      {
        name: 'dev-tools',
        configureServer(server) {
          // Enhanced development middleware
        }
      }
    ] : [])
  ],
  
  server: {
    port: 3000,
    host: true
  },
  
  worker: {
    format: 'es'
  }
});

Production Build Configuration

import { 
  getWorkers,
  resolveWorkersRootDir 
} from "@dcloudio/uni-cli-shared";

export default defineConfig({
  build: {
    rollupOptions: {
      input: {
        main: './src/main.ts',
        ...getWorkers() // Include all workers in build
      },
      
      output: {
        chunkFileNames: 'js/[name].[hash].js',
        entryFileNames: 'js/[name].[hash].js',
        
        // Separate worker outputs
        manualChunks(id) {
          const workersRoot = resolveWorkersRootDir();
          if (id.includes(workersRoot)) {
            return 'workers';
          }
        }
      }
    },
    
    // Production optimizations
    minify: 'esbuild',
    target: ['es2015', 'chrome63'],
    cssCodeSplit: true
  }
});

Multi-Platform Build

import { 
  initWorkers,
  uniWorkersPlugin 
} from "@dcloudio/uni-cli-shared";

// Configure builds for different uni-app platforms
const platformConfigs = {
  'h5': {
    plugins: [
      uniWorkersPlugin(),
      // H5-specific plugins
    ]
  },
  
  'app-plus': {
    plugins: [
      uniWorkersPlugin(),
      // Native app plugins
    ]
  },
  
  'mp-weixin': {
    plugins: [
      // Mini-program specific worker handling
      uniWorkersPlugin()
    ]
  }
};

export default ({ command, mode }) => {
  const platform = process.env.UNI_PLATFORM || 'h5';
  const config = platformConfigs[platform];
  
  // Initialize platform-specific workers
  if (platform === 'app-plus') {
    const workers = initWorkers(['./src/native-workers'], process.cwd());
    console.log('Native workers:', workers);
  }
  
  return defineConfig(config);
};

Worker Management

import { 
  initWorkers,
  getWorkers,
  resolveWorkersDir 
} from "@dcloudio/uni-cli-shared";

// Advanced worker management
class UniWorkerManager {
  private workers: Record<string, string> = {};
  
  async initialize(projectRoot: string) {
    // Discover worker directories from manifest
    const workerDirs = resolveWorkersDir(projectRoot);
    
    // Initialize worker mappings
    this.workers = initWorkers(workerDirs, projectRoot);
    
    console.log('Initialized workers:', Object.keys(this.workers));
  }
  
  getWorkerPath(name: string): string | undefined {
    return this.workers[name];
  }
  
  getAllWorkers(): Record<string, string> {
    return { ...this.workers };
  }
  
  // Dynamic worker loading
  async loadWorker(name: string): Promise<Worker | null> {
    const workerPath = this.getWorkerPath(name);
    if (!workerPath) return null;
    
    return new Worker(workerPath, { 
      type: 'module' 
    });
  }
}

// Usage in application
const workerManager = new UniWorkerManager();
await workerManager.initialize('./');

// Load specific worker
const dataWorker = await workerManager.loadWorker('data-processor');
if (dataWorker) {
  dataWorker.postMessage({ action: 'process', data: [...] });
}

Console Integration

import { 
  uniHBuilderXConsolePlugin, 
  isEnableConsole 
} from "@dcloudio/uni-cli-shared";

// Enhanced console integration for development
const createConsolePlugin = () => {
  if (!isEnableConsole()) return null;
  
  return {
    name: 'uni-console-enhanced',
    configureServer(server) {
      // WebSocket connection for real-time logging
      server.ws.on('uni:console', (data) => {
        console.log('[UNI]', data);
      });
    },
    
    transform(code, id) {
      if (id.includes('.vue')) {
        // Inject console helpers in Vue components
        return {
          code: `
            ${code}
            if (process.env.NODE_ENV === 'development') {
              // Enhanced logging for Vue components
            }
          `,
          map: null
        };
      }
    }
  };
};

// Use in Vite config
export default {
  plugins: [
    uniHBuilderXConsolePlugin('__hbx__'),
    createConsolePlugin()
  ].filter(Boolean)
};

Performance Optimization

Worker Performance

import { uniJavaScriptWorkersPlugin } from "@dcloudio/uni-cli-shared";

// Optimize worker performance with code splitting
export default {
  plugins: [
    uniJavaScriptWorkersPlugin()
  ],
  
  worker: {
    rollupOptions: {
      output: {
        format: 'es',
        // Optimize worker bundle size
        manualChunks: {
          'worker-utils': ['./src/workers/utils'],
          'worker-vendor': ['lodash', 'axios']
        }
      }
    }
  }
};

Build Optimization

import { 
  getWorkers,
  isEnableConsole 
} from "@dcloudio/uni-cli-shared";

export default defineConfig({
  build: {
    // Production optimizations
    rollupOptions: {
      output: {
        // Separate worker code from main bundle
        manualChunks: {
          workers: Object.values(getWorkers())
        }
      }
    },
    
    // Conditional development features
    define: {
      '__DEV__': JSON.stringify(isEnableConsole()),
      '__WORKERS_ENABLED__': JSON.stringify(
        Object.keys(getWorkers()).length > 0
      )
    }
  }
});

Build tools integration provides comprehensive support for modern development workflows while maintaining compatibility across uni-app's diverse platform ecosystem.

Install with Tessl CLI

npx tessl i tessl/npm-dcloudio--uni-cli-shared

docs

build-tools.md

constants-types.md

development-tools.md

filesystem.md

index.md

miniprogram.md

plugin-system.md

uts.md

vue-integration.md

tile.json