slowprog / composer-copy-file
Composer script copying your files after install
Requires
- php: >=5.6
Requires (Dev)
- composer/composer: 1.0.*@dev
- mikey179/vfsstream: ~1
- php-mock/php-mock-phpunit: ~1
- phpunit/phpunit: 5.7.27
- symfony/filesystem: ~2.7
- symfony/finder: ~2.7
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Composer copy file
Composer script copying your files after install. Supports copying of entire directories, individual files and complex nested directories.
For example copy fonts:
{
"require":{
"twbs/bootstrap": "~3.3",
"slowprog/composer-copy-file": "~0.3"
},
"scripts": {
"post-install-cmd": [
"SlowProg\\CopyFile\\ScriptHandler::copy"
],
"post-update-cmd": [
"SlowProg\\CopyFile\\ScriptHandler::copy"
]
},
"extra": {
"copy-file": {
"vendor/twbs/bootstrap/fonts/": "web/fonts/"
}
}
}
In a development you may use -dev suffix. For example copy non-minified in development and minified in production:
{
"require":{
"twbs/bootstrap": "~3.3",
"slowprog/composer-copy-file": "~0.3"
},
"scripts": {
"post-install-cmd": [
"SlowProg\\CopyFile\\ScriptHandler::copy"
],
"post-update-cmd": [
"SlowProg\\CopyFile\\ScriptHandler::copy"
]
},
"extra": {
"copy-file": {
"vendor/twbs/bootstrap/dist/js/bootstrap.min.js": "web/js/bootstrap.js"
},
"copy-file-dev": {
"vendor/twbs/bootstrap/dist/js/bootstrap.js": "web/js/bootstrap.js"
}
}
}
Use cases
You need to be careful when using a last slash. The file-destination is different from the directory-destination with the slash.
If in destination directory already exists copy of file, then it will be override. To overwrite only older files append ? in end of destination path.
Source directory hierarchy:
dir/
subdir/
file1.txt
file2.txt
-
Dir-to-dir:
{ "extra": { "copy-file": { "dir/subdir/": "web/other/" } } }Result:
web/ other/ file1.txt file2.txt -
File-to-dir:
{ "extra": { "copy-file": { "dir/subdir/file1.txt": "web/other/", "dir/subdir/file2.txt": "web/other/file2.txt/" } } }Result:
web/ other/ file1.txt file2.txt/ file2.txt -
File-to-file:
{ "extra": { "copy-file": { "dir/subdir/file1.txt": "web/other/file1.txt", "dir/subdir/file2.txt": "web/other/file_rename.txt" } } }Result:
web/ other/ file1.txt file_rename.txt -
Override only older files:
{ "extra": { "copy-file": { "dir/subdir/": "web/other/?" } } }Preset:
web/ other/ file1.txt - Recently modified file2.txt - Old rotten fileResult:
web/ other/ file1.txt - Not changed file2.txt - Replaced -
Filter source files by regexp pattern
{ "extra": { "copy-file": { "dir/subdir#1\.\w{3}$": "web/other/" } } }Result:
web/ other/ file1.txt