2.3.3 • Published 2 months ago

@sp-packages/copyrc v2.3.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

CopyRC

✨ 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.

2.3.3

2 months ago

2.3.2

2 months ago

2.3.1

2 months ago

2.3.0

4 months ago

2.2.0

4 months ago

2.1.0

4 months ago

2.0.0

4 months ago

1.0.0

4 months ago