mise-task-configuration
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMise - Task Configuration
Mise - 任务配置
Defining and managing tasks in Mise for build automation, testing, and development workflows.
在Mise中定义和管理任务,用于构建自动化、测试和开发工作流。
Basic Task Definition
基本任务定义
Simple TOML Tasks
简单TOML任务
toml
undefinedtoml
undefinedmise.toml
mise.toml
[tasks.build]
description = "Build the project"
run = "cargo build --release"
[tasks.test]
description = "Run all tests"
run = "cargo test"
[tasks.lint]
description = "Run linter"
run = "cargo clippy -- -D warnings"
undefined[tasks.build]
description = "Build the project"
run = "cargo build --release"
[tasks.test]
description = "Run all tests"
run = "cargo test"
[tasks.lint]
description = "Run linter"
run = "cargo clippy -- -D warnings"
undefinedRunning Tasks
运行任务
bash
undefinedbash
undefinedRun a task
Run a task
mise run build
mise build # Shorthand if no command conflicts
mise run build
mise build # Shorthand if no command conflicts
Run multiple tasks
Run multiple tasks
mise run build test lint
mise run build test lint
List available tasks
List available tasks
mise tasks ls
mise tasks ls
Show task details
Show task details
mise tasks info build
undefinedmise tasks info build
undefinedTask Dependencies
任务依赖关系
Sequential Dependencies
顺序依赖
toml
[tasks.deploy]
description = "Deploy the application"
depends = ["build", "test"]
run = "./deploy.sh"toml
[tasks.deploy]
description = "Deploy the application"
depends = ["build", "test"]
run = "./deploy.sh"Parallel Dependencies
并行依赖
toml
[tasks.ci]
description = "Run CI checks"
depends = ["lint", "test", "security-scan"]
run = "echo 'All checks passed'"Mise automatically runs dependencies in parallel when possible.
toml
[tasks.ci]
description = "Run CI checks"
depends = ["lint", "test", "security-scan"]
run = "echo 'All checks passed'"Mise会在可能的情况下自动并行运行依赖任务。
File Tasks
文件任务
Creating File Tasks
创建文件任务
bash
undefinedbash
undefinedCreate task directory
Create task directory
mkdir -p .mise/tasks
mkdir -p .mise/tasks
Create executable task file
Create executable task file
cat > .mise/tasks/deploy <<'EOF'
#!/usr/bin/env bash
cat > .mise/tasks/deploy <<'EOF'
#!/usr/bin/env bash
mise description="Deploy the application"
mise description="Deploy the application"
mise depends=["build", "test"]
mise depends=["build", "test"]
echo "Deploying..."
./scripts/deploy.sh
EOF
chmod +x .mise/tasks/deploy
undefinedecho "Deploying..."
./scripts/deploy.sh
EOF
chmod +x .mise/tasks/deploy
undefinedFile Task Metadata
文件任务元数据
bash
#!/usr/bin/env bashbash
#!/usr/bin/env bashmise description="Task description"
mise description="Task description"
mise depends=["dependency1", "dependency2"]
mise depends=["dependency1", "dependency2"]
mise sources=["src/**/*.rs"]
mise sources=["src/**/*.rs"]
mise outputs=["target/release/app"]
mise outputs=["target/release/app"]
Task implementation
Task implementation
undefinedundefinedAdvanced Task Configuration
高级任务配置
Task Arguments
任务参数
toml
[tasks.test]
description = "Run tests with optional filter"
run = '''
if [ -n "$1" ]; then
cargo test "$1"
else
cargo test
fi
'''bash
undefinedtoml
[tasks.test]
description = "Run tests with optional filter"
run = '''
if [ -n "$1" ]; then
cargo test "$1"
else
cargo test
fi
'''bash
undefinedRun all tests
Run all tests
mise test
mise test
Run specific test
Run specific test
mise test user_tests
undefinedmise test user_tests
undefinedEnvironment Variables in Tasks
任务中的环境变量
toml
[tasks.build]
description = "Build with specific configuration"
env = { RUST_ENV = "production", OPTIMIZATION = "3" }
run = "cargo build --release"
[tasks.dev]
description = "Start development server"
env = { NODE_ENV = "development", PORT = "3000" }
run = "npm run dev"toml
[tasks.build]
description = "Build with specific configuration"
env = { RUST_ENV = "production", OPTIMIZATION = "3" }
run = "cargo build --release"
[tasks.dev]
description = "Start development server"
env = { NODE_ENV = "development", PORT = "3000" }
run = "npm run dev"Task Aliases
任务别名
toml
[tasks.b]
alias = "build"
[tasks.t]
alias = "test"
[tasks.d]
alias = "dev"bash
undefinedtoml
[tasks.b]
alias = "build"
[tasks.t]
alias = "test"
[tasks.d]
alias = "dev"bash
undefinedUse aliases
Use aliases
mise b # Runs build
mise t # Runs test
undefinedmise b # Runs build
mise t # Runs test
undefinedFile Watching
文件监听
Watch Mode Tasks
监听模式任务
toml
[tasks.watch]
description = "Watch and rebuild on changes"
run = "cargo watch -x build"
[tasks."test:watch"]
description = "Watch and run tests"
run = "cargo watch -x test"bash
undefinedtoml
[tasks.watch]
description = "Watch and rebuild on changes"
run = "cargo watch -x build"
[tasks."test:watch"]
description = "Watch and run tests"
run = "cargo watch -x test"bash
undefinedBuilt-in watch with mise
Built-in watch with mise
mise watch --task build
undefinedmise watch --task build
undefinedMonorepo Task Patterns
单体仓库任务模式
Workspace Tasks
工作区任务
toml
undefinedtoml
undefinedRoot mise.toml
Root mise.toml
[tasks.build-all]
description = "Build all packages"
depends = ["pkg-a:build", "pkg-b:build", "pkg-c:build"]
run = "echo 'All packages built'"
[tasks."pkg-a:build"]
description = "Build package A"
run = "cd packages/pkg-a && cargo build"
[tasks."pkg-b:build"]
description = "Build package B"
run = "cd packages/pkg-b && cargo build"
undefined[tasks.build-all]
description = "Build all packages"
depends = ["pkg-a:build", "pkg-b:build", "pkg-c:build"]
run = "echo 'All packages built'"
[tasks."pkg-a:build"]
description = "Build package A"
run = "cd packages/pkg-a && cargo build"
[tasks."pkg-b:build"]
description = "Build package B"
run = "cd packages/pkg-b && cargo build"
undefinedPer-Package Tasks
每个包的任务
toml
undefinedtoml
undefinedpackages/pkg-a/mise.toml
packages/pkg-a/mise.toml
[tasks.build]
description = "Build package A"
run = "cargo build"
[tasks.test]
description = "Test package A"
depends = ["build"]
run = "cargo test"
undefined[tasks.build]
description = "Build package A"
run = "cargo build"
[tasks.test]
description = "Test package A"
depends = ["build"]
run = "cargo test"
undefinedTask Validation
任务验证
Validate Task Configuration
验证任务配置
bash
undefinedbash
undefinedValidate all tasks
Validate all tasks
mise tasks validate
mise tasks validate
Check specific task
Check specific task
mise tasks info build
undefinedmise tasks info build
undefinedCommon Validation Errors
常见验证错误
toml
undefinedtoml
undefinedError: Missing required fields
Error: Missing required fields
[tasks.broken]
run = "echo test" # Missing description
[tasks.broken]
run = "echo test" # Missing description
Error: Invalid dependency
Error: Invalid dependency
[tasks.deploy]
description = "Deploy"
depends = ["nonexistent-task"]
run = "./deploy.sh"
[tasks.deploy]
description = "Deploy"
depends = ["nonexistent-task"]
run = "./deploy.sh"
Error: Circular dependency
Error: Circular dependency
[tasks.a]
description = "Task A"
depends = ["b"]
run = "echo a"
[tasks.b]
description = "Task B"
depends = ["a"] # Circular!
run = "echo b"
undefined[tasks.a]
description = "Task A"
depends = ["b"]
run = "echo a"
[tasks.b]
description = "Task B"
depends = ["a"] # Circular!
run = "echo b"
undefinedBest Practices
最佳实践
Organize Tasks by Purpose
按用途组织任务
toml
undefinedtoml
undefinedBuild tasks
Build tasks
[tasks.build]
description = "Build production binary"
run = "cargo build --release"
[tasks."build:debug"]
description = "Build debug binary"
run = "cargo build"
[tasks.build]
description = "Build production binary"
run = "cargo build --release"
[tasks."build:debug"]
description = "Build debug binary"
run = "cargo build"
Test tasks
Test tasks
[tasks.test]
description = "Run all tests"
run = "cargo test"
[tasks."test:unit"]
description = "Run unit tests only"
run = "cargo test --lib"
[tasks."test:integration"]
description = "Run integration tests"
run = "cargo test --test '*'"
[tasks.test]
description = "Run all tests"
run = "cargo test"
[tasks."test:unit"]
description = "Run unit tests only"
run = "cargo test --lib"
[tasks."test:integration"]
description = "Run integration tests"
run = "cargo test --test '*'"
Development tasks
Development tasks
[tasks.dev]
description = "Start development server"
run = "cargo run"
[tasks.watch]
description = "Watch and rebuild"
run = "cargo watch -x run"
undefined[tasks.dev]
description = "Start development server"
run = "cargo run"
[tasks.watch]
description = "Watch and rebuild"
run = "cargo watch -x run"
undefinedUse Descriptive Names
使用描述性名称
toml
undefinedtoml
undefinedGood: Clear, descriptive names
Good: Clear, descriptive names
[tasks."test:integration:api"]
description = "Run API integration tests"
run = "pytest tests/integration/api"
[tasks."test:integration:api"]
description = "Run API integration tests"
run = "pytest tests/integration/api"
Avoid: Vague names
Avoid: Vague names
[tasks.t1]
description = "Some test"
run = "pytest"
undefined[tasks.t1]
description = "Some test"
run = "pytest"
undefinedLeverage Dependencies
利用依赖关系
toml
undefinedtoml
undefinedGood: Explicit dependencies
Good: Explicit dependencies
[tasks.deploy]
description = "Deploy to production"
depends = ["lint", "test", "build"]
run = "./scripts/deploy.sh"
[tasks.deploy]
description = "Deploy to production"
depends = ["lint", "test", "build"]
run = "./scripts/deploy.sh"
Avoid: Manual sequencing in run command
Avoid: Manual sequencing in run command
[tasks.deploy]
description = "Deploy to production"
run = '''
cargo clippy
cargo test
cargo build --release
./scripts/deploy.sh
'''
undefined[tasks.deploy]
description = "Deploy to production"
run = '''
cargo clippy
cargo test
cargo build --release
./scripts/deploy.sh
'''
undefinedUse Environment Variables
使用环境变量
toml
undefinedtoml
undefinedAccess mise environment variables
Access mise environment variables
[tasks.info]
description = "Show task info"
run = '''
echo "Task: $MISE_TASK_NAME"
echo "Project root: $MISE_PROJECT_ROOT"
echo "Config root: $MISE_CONFIG_ROOT"
'''
undefined[tasks.info]
description = "Show task info"
run = '''
echo "Task: $MISE_TASK_NAME"
echo "Project root: $MISE_PROJECT_ROOT"
echo "Config root: $MISE_CONFIG_ROOT"
'''
undefinedCommon Patterns
常见模式
Pre/Post Hooks
前置/后置钩子
toml
[tasks.build]
description = "Build with pre/post hooks"
depends = ["pre-build"]
run = "cargo build"
[tasks.pre-build]
description = "Run before build"
run = "echo 'Preparing build...'"
[tasks.post-build]
description = "Run after build"
run = "echo 'Build complete!'"
[tasks."build:full"]
description = "Build with all hooks"
depends = ["pre-build", "build", "post-build"]
run = "echo 'Full build pipeline complete'"toml
[tasks.build]
description = "Build with pre/post hooks"
depends = ["pre-build"]
run = "cargo build"
[tasks.pre-build]
description = "Run before build"
run = "echo 'Preparing build...'"
[tasks.post-build]
description = "Run after build"
run = "echo 'Build complete!'"
[tasks."build:full"]
description = "Build with all hooks"
depends = ["pre-build", "build", "post-build"]
run = "echo 'Full build pipeline complete'"Conditional Execution
条件执行
toml
[tasks.deploy]
description = "Deploy only if tests pass"
run = '''
if mise test; then
./scripts/deploy.sh
else
echo "Tests failed, deployment cancelled"
exit 1
fi
'''toml
[tasks.deploy]
description = "Deploy only if tests pass"
run = '''
if mise test; then
./scripts/deploy.sh
else
echo "Tests failed, deployment cancelled"
exit 1
fi
'''Multi-Stage Builds
多阶段构建
toml
[tasks.build]
description = "Multi-stage build"
depends = ["compile", "optimize", "package"]
run = "echo 'Build complete'"
[tasks.compile]
description = "Compile source"
run = "cargo build --release"
[tasks.optimize]
description = "Optimize binary"
depends = ["compile"]
run = "strip target/release/app"
[tasks.package]
description = "Create package"
depends = ["optimize"]
run = "tar -czf app.tar.gz target/release/app"toml
[tasks.build]
description = "Multi-stage build"
depends = ["compile", "optimize", "package"]
run = "echo 'Build complete'"
[tasks.compile]
description = "Compile source"
run = "cargo build --release"
[tasks.optimize]
description = "Optimize binary"
depends = ["compile"]
run = "strip target/release/app"
[tasks.package]
description = "Create package"
depends = ["optimize"]
run = "tar -czf app.tar.gz target/release/app"Anti-Patterns
反模式
Don't Hardcode Paths
不要硬编码路径
toml
undefinedtoml
undefinedBad: Hardcoded absolute paths
Bad: Hardcoded absolute paths
[tasks.build]
description = "Build"
run = "cd /Users/me/project && cargo build"
[tasks.build]
description = "Build"
run = "cd /Users/me/project && cargo build"
Good: Use relative paths and environment variables
Good: Use relative paths and environment variables
[tasks.build]
description = "Build"
run = "cd $MISE_PROJECT_ROOT && cargo build"
undefined[tasks.build]
description = "Build"
run = "cd $MISE_PROJECT_ROOT && cargo build"
undefinedDon't Duplicate Logic
不要重复逻辑
toml
undefinedtoml
undefinedBad: Duplicated test logic
Bad: Duplicated test logic
[tasks."test:unit"]
run = "cargo test --lib"
[tasks."test:integration"]
run = "cargo test --test '*'"
[tasks."test:all"]
run = "cargo test --lib && cargo test --test '*'"
[tasks."test:unit"]
run = "cargo test --lib"
[tasks."test:integration"]
run = "cargo test --test '*'"
[tasks."test:all"]
run = "cargo test --lib && cargo test --test '*'"
Good: Use dependencies
Good: Use dependencies
[tasks."test:all"]
depends = ["test:unit", "test:integration"]
run = "echo 'All tests complete'"
undefined[tasks."test:all"]
depends = ["test:unit", "test:integration"]
run = "echo 'All tests complete'"
undefinedDon't Ignore Exit Codes
不要忽略退出码
toml
undefinedtoml
undefinedBad: Swallowing errors
Bad: Swallowing errors
[tasks.ci]
run = '''
cargo clippy || true
cargo test || true
echo "CI complete"
'''
[tasks.ci]
run = '''
cargo clippy || true
cargo test || true
echo "CI complete"
'''
Good: Fail fast
Good: Fail fast
[tasks.ci]
depends = ["lint", "test"]
run = "echo 'CI checks passed'"
undefined[tasks.ci]
depends = ["lint", "test"]
run = "echo 'CI checks passed'"
undefinedRelated Skills
相关技能
- tool-management: Managing tool versions with Mise
- environment-management: Environment variables and configuration
- 工具管理: 使用Mise管理工具版本
- 环境管理: 环境变量与配置