Skip to content

SP-Packages/copyrc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

59 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CopyRC

A lightweight CLI tool to automate copying template files during project setup or runtime.

npm version npm downloads license build status semantic-release TypeScript Prettier codecov PRs welcome Sponsor

✨ Features

  • πŸ“‚ Copies template files to designated locations
  • πŸ”„ Skips existing files to prevent overwrites
  • ⚑ Works with any project type (WordPress, Node.js, PHP, etc.)
  • πŸ”§ Fully configurable via copyrc.json
  • πŸ› οΈ Can be integrated into CI/CD, Lando, and other automation workflows
  • πŸ“œ Supports programmatic usage in Node.js projects

πŸ“¦ Installation

Global Installation (For system-wide use)

npm install -g @sp-packages/copyrc

This allows you to use copyrc globally in your terminal.

Local Installation (For project-specific use)

npm install @sp-packages/copyrc --save-dev

Then, run it via:

npx copyrc

βš™οΈ Configuration (copyrc.json)

Running the copyrc command will allow you to automatically create the copyrc.json file. Alternatively, you can manually create a copyrc.json or .copyrc.json in your project root or a custom configuration file and pass it using the -c or --config parameter:

{
  "files": [
    { "source": "./templates/.env.template", "destination": "./public/.env" },
    {
      "source": "./templates/wp-config.php.template",
      "destination": "./public/wp-config.php"
    },
    {
      "source": "./templates/.htaccess.template",
      "destination": "./public/.htaccess"
    }
  ]
}

If no --config option is provided, copyrc will look for copyrc.json or .copyrc.json in the project root by default.

πŸš€ CLI Usage

Basic Usage

copyrc

This will use copyrc.json or .copyrc.json from the project root.

Custom Config File Path

copyrc -c ./custom-config.json

Configuration Options:

  • files[] – Array of file mappings
    • source – Path to the template file
    • destination – Target path where the file should be copied

πŸ“œ Programmatic Usage (Inside Node.js)

You can also use copyrc inside your JavaScript/TypeScript projects.

Import and Run Directly

import { copyrc } from '@sp-packages/copyrc';

const config = {
  files: [
    { source: './templates/.env.template', destination: './public/.env' },
    {
      source: './templates/wp-config.php.template',
      destination: './public/wp-config.php'
    }
  ]
};

copyrc(config, true); // The second argument enables verbose logging

Example Use Case in a Node.js Script

Create a script setup.js:

import { copyrc } from '@sp-packages/copyrc';
import fs from 'fs';

const configPath = './copyrc.json';

if (fs.existsSync(configPath)) {
  const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
  copyrc(config, false);
} else {
  console.error('❌ Config file not found!');
}

Then run:

node setup.js

🎯 Example Outputs

⚠ [WARNING] Destination file already exists at ./public/.env. Skipping.
βœ” [SUCCESS] wp-config.php.template copied successfully to ./public/wp-config.php
βœ” [SUCCESS] All required files are copied or already exist.

πŸ’‘ Use Cases

  • WordPress Setup – Automate wp-config.php and .htaccess
  • Environment Files – Ensure .env files are always present
  • Project Bootstrapping – Copy necessary config files on composer install
  • CI/CD Automation – Automate file setups during deployments

1️⃣ Automating Lando Post-Start Hook

If you're using Lando, you can automatically run copyrc after lando start:

services:
  appserver:
    run_as_root:
      - copyrc

2️⃣ CI/CD Integration

Run it in GitHub Actions, GitLab CI/CD, or other automation scripts:

jobs:
  setup:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3

      - name: Install Dependencies
        run: npm ci

      - name: Install Copyrc
        run: npm install -g @sp-packages/copyrc

      - name: Run Copyrc
        run: copyrc

🀝 Contributing

Contributions are welcome! Please open an issue or submit a pull request on GitHub.

πŸ“œ License

This project is licensed under the MIT License. See the LICENSE file for details.

About

A lightweight CLI tool to automate copying template files during project setup or runtime.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published

Contributors 3

  •  
  •  
  •