A lightweight CLI tool to automate copying template files during project setup or runtime.
- π 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
npm install -g @sp-packages/copyrc
This allows you to use copyrc
globally in your terminal.
npm install @sp-packages/copyrc --save-dev
Then, run it via:
npx copyrc
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.
copyrc
This will use copyrc.json
or .copyrc.json
from the project root.
copyrc -c ./custom-config.json
files[]
β Array of file mappingssource
β Path to the template filedestination
β Target path where the file should be copied
You can also use copyrc
inside your JavaScript/TypeScript projects.
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
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
β [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.
- 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
If you're using Lando, you can automatically run copyrc
after lando start
:
services:
appserver:
run_as_root:
- copyrc
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
Contributions are welcome! Please open an issue or submit a pull request on GitHub.
This project is licensed under the MIT License. See the LICENSE file for details.