承接 dimer47/laravel-env-migrations 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dimer47/laravel-env-migrations

最新稳定版本:1.0.1

Composer 安装命令:

composer require dimer47/laravel-env-migrations

包简介

Versioned migration system for Laravel's .env file, similar to database migrations.

README 文档

README

Latest Version on Packagist Total Downloads PHP Version Require Laravel License

Versioned migration system for Laravel's .env file, similar to database migrations. 🗂️

🇫🇷 Lire en français

🎉 Features

  • 🔄 Versioned migrations — manage .env changes just like database migrations
  • 📦 Database tracking — tracking table with batches and JSON history
  • Rollback — revert the last batch of changes
  • 📊 Status — view the state of all migrations
  • 🧩 Laravel ready — auto-discovery, publishable config, Artisan commands
  • 🛡️ Production safe — mandatory confirmation in production (unless --force)
  • 🔧 11 methods — set, get, remove, rename, copy, group, block, etc.

📍 Installation

Via Composer (packagist)

composer require dimer47/laravel-env-migrations

🧪 Via a local repository (development)

Add to the host project's composer.json:

{
    "repositories": [
        {
            "type": "path",
            "url": "packages/laravel-env-migrations"
        }
    ],
    "require": {
        "dimer47/laravel-env-migrations": "*"
    }
}

Then:

composer update dimer47/laravel-env-migrations

🔧 Configuration

Publish the package files:

# Publish the config
php artisan vendor:publish --tag=env-migrations-config

# Publish the tracking table migration
php artisan vendor:publish --tag=env-migrations-migrations

# Run the migration
php artisan migrate

⚙️ Configuration options (config/env-migrations.php)

Option Description Default
table Name of the tracking table env_migrations
path Directory for migration files database/env-migrations

🚀 Quick Start

➕ Create a migration

php artisan env:migrate:make add_redis_configuration

This creates a file in database/env-migrations/ with a ready-to-use template.

✏️ Write a migration

<?php

use Dimer47\EnvMigrations\EnvMigration;

return new class extends EnvMigration
{
    public function getDescription(): string
    {
        return 'Configure Redis for cache and queues';
    }

    public function up(): void
    {
        // Set a variable
        $this->set('CACHE_DRIVER', 'redis');

        // Set only if missing
        $this->setIfMissing('REDIS_HOST', '127.0.0.1');

        // Rename a variable (keeps its position)
        $this->rename('OLD_REDIS_PORT', 'REDIS_PORT');

        // Copy a variable
        $this->copy('REDIS_HOST', 'REDIS_CACHE_HOST');

        // Remove a variable
        $this->remove('DEPRECATED_CACHE_KEY');

        // Group variables together
        $this->ensureGroup([
            'REDIS_HOST' => '127.0.0.1',
            'REDIS_PASSWORD' => 'null',
            'REDIS_PORT' => '6379',
        ], '# Redis Configuration');

        // Insert a group after a reference variable
        $this->ensureGroupAfter('CACHE_DRIVER', [
            'CACHE_PREFIX' => 'myapp',
            'CACHE_TTL' => '3600',
        ]);

        // Append a multi-line block
        $this->appendBlock(<<<'ENV'
# Queue Configuration
QUEUE_CONNECTION=redis
QUEUE_RETRY_AFTER=90
ENV, 'QUEUE_CONNECTION');
    }

    public function down(): void
    {
        $this->set('CACHE_DRIVER', 'file');
        $this->remove('REDIS_CACHE_HOST');
        $this->rename('REDIS_PORT', 'OLD_REDIS_PORT');
        $this->removeBlock('# Queue Configuration', 'QUEUE_RETRY_AFTER');
    }
};

▶️ Run migrations

php artisan env:migrate
php artisan env:migrate --force  # Skip confirmation in production

📊 View status

php artisan env:migrate:status

⏪ Rollback last batch

php artisan env:migrate:rollback
php artisan env:migrate:rollback --force  # Skip confirmation in production

📚 Available methods

Method Description
set($key, $value) Set or update a variable
get($key) Read a variable's value
remove($key) Remove a variable
rename($oldKey, $newKey) Rename a variable (keeps its position)
copy($source, $target) Copy a variable to a new key
exists($key) Check if a variable exists
setIfMissing($key, $value) Set only if not already defined
ensureGroup($vars, $comment) Group variables together
ensureGroupAfter($afterKey, $vars, $comment) Insert a group after a reference variable
appendBlock($block, $identifier) Append a multi-line block (duplicate-safe)
removeBlock($start, $end) Remove a block by markers

🖥️ Artisan Commands

Command Description
env:migrate ▶️ Run pending migrations
env:migrate:rollback ⏪ Rollback the last batch
env:migrate:status 📊 Display migrations status
env:migrate:make {name} ➕ Create a new migration

🗄️ Tracking table schema

Column Type Description
id BIGINT Auto-incremented primary key
migration VARCHAR(255) Unique migration name
batch INT Execution batch number
changes JSON Detailed change history
executed_at TIMESTAMP Execution date

📄 License

MIT — See LICENSE

统计信息

  • 总下载量: 134
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-03-17

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固