# ๐Ÿ”ง Configuration File Guide

Welcome to MockM's configuration world! mm.config.js is like your personal debugger, making the API Mock service run exactly according to your needs.

# ๐Ÿš€ Quick Start

No configuration file? No problem! MockM will start with default configuration, letting you experience immediately:

# Execute in any directory, MockM automatically uses default settings
mockm

# ๐Ÿ’ก Basic Configuration - Starting from Zero

Creating your first configuration file is very simple:

๐Ÿ“ mm.config.js

module.exports = {
  port: 9000,              // ๐ŸŒ Service port
  host: '0.0.0.0',         // ๐Ÿ“ก Listen address
  dataDir: './httpData'    // ๐Ÿ“‚ Data storage directory
}

# ๐ŸŽฏ Advanced Configuration - Functional Configuration

When you need more flexible configuration, functional configuration comes in handy:

module.exports = (util) => {
  // ๐Ÿ› ๏ธ Utilize MockM's powerful utility library
  return {
    port: process.env.NODE_ENV === 'production' ? 80 : 9000,
    
    // ๐Ÿ“Š Dynamic configuration based on environment
    db: {
      users: util.libObj.mockjs.mock({
        'list|10': [{
          'id|+1': 1,
          'name': '@name'
        }]
      }).list
    },
    
    // ๐Ÿ”ง Advanced feature configuration
    api: {
      '/api/status': (req, res) => {
        res.json({ 
          status: 'running',
          timestamp: Date.now(),
          environment: process.env.NODE_ENV || 'development'
        })
      }
    }
  }
}

# ๐ŸŒŸ Practical Configuration Scenarios

# ๐Ÿ“ฑ Mobile Development Scenario

module.exports = {
  port: 3001,
  cors: true,                    // ๐ŸŒ CORS support
  static: './mobile-assets',     // ๐Ÿ“ฑ Static resource directory
  
  // ๐Ÿ”„ Proxy real API for debugging
  proxy: {
    '/api/prod': 'https://api.production.com'
  }
}

# ๐Ÿงช Test Environment Configuration

module.exports = (util) => {
  return {
    port: 9999,
    
    // ๐ŸŽฒ Simulate various network conditions
    api: {
      '/api/slow': (req, res) => {
        setTimeout(() => {
          res.json({ message: 'Simulate slow network response' })
        }, 3000)
      },
      
      '/api/error': (req, res) => {
        // ๐Ÿšจ Simulate error response for testing
        res.status(500).json({ error: 'Internal server error' })
      }
    }
  }
}

# ๐Ÿข Team Collaboration Configuration

module.exports = (util) => {
  const teamConfig = {
    port: 8080,
    
    // ๐Ÿ‘ฅ Team shared interface definitions
    api: {
      // ๐Ÿ“ˆ User management interfaces
      'GET /api/users': 'data1',
      'POST /api/users': 'data2',
      
      // ๐Ÿ›๏ธ Product management interfaces
      'GET /api/products': util.libObj.mockjs.mock({
        'list|20-50': [{
          'id|+1': 1,
          'name': '@title(3,8)',
          'price|100-9999': 1,
          'category': '@pick(["Electronics", "Clothing", "Food", "Books"])'
        }]
      }).list
    },
    
    // ๐Ÿ” Development environment security configuration
    disable: process.env.NODE_ENV === 'production' ? ['record'] : []
  }
  
  return teamConfig
}

# ๐ŸŽจ The Art of Configuration Files

# ๐Ÿ“ Configuration File Naming Rules

  • mm.config.js - Standard configuration file
  • mm.config.dev.js - Development environment specific
  • mm.config.prod.js - Production environment specific

# ๐Ÿ”„ Environment Variable Integration

module.exports = {
  port: process.env.MOCK_PORT || 9000,
  host: process.env.MOCK_HOST || 'localhost',
  
  // ๐ŸŒฑ Enable different features based on environment
  disable: process.env.NODE_ENV === 'production' 
    ? ['record', 'history'] 
    : []
}

# ๐Ÿšจ Common Configuration Pitfalls

  1. Port Conflicts ๐Ÿ”ฅ

    // โŒ Avoid using system reserved ports
    port: 80  // Requires administrator privileges
    
    // โœ… Use development-friendly ports
    port: 9000
    
  2. Path Configuration Errors ๐Ÿ“

    // โŒ Relative paths may cause issues
    dataDir: '../data'
    
    // โœ… Use absolute paths or __dirname
    dataDir: path.join(__dirname, 'httpData')
    

# ๐ŸŽฏ Next Steps to Explore

Configuration files are just the beginning! Continue exploring more powerful features:

๐Ÿ’ก Pro Tip: Configuration files support hot reload, automatically taking effect after modifications for a smoother development experience!

Last Updated: 7/25/2025, 5:52:54 AM