🎩 Magento 2 command to automatically copy files into active theme.
- Install via composer
composer require jahvi/magento2-copy-theme-override --dev
- Run
php bin/magento setup:upgrade
After installing the extension you will have access to a new command:
php bin/magento dev:copy-theme-override $file_path
This takes a single $file_path
argument which is the absolute path of the CSS, LESS, JS, PHTML or HTML file you want to override in your theme, so for example to override the product/list.phtml
template you'd run:
php bin/magento dev:copy-theme-override /var/www/magento2/vendor/magento/module-catalog/view/frontend/templates/product/list.phtml
And it will copy the file into your theme as:
/var/www/magento2/vendor/magento/app/design/Sample/theme/Magento_Catalog/templates/product/list.phtml
By itself the command is not very useful but most IDEs or code editors provide a way to run custom commands using keyboard shortcuts that will help simplify this workflow, below are some examples of a few popular ones.
- Create a
.vscode/tasks.json
file in the project root with the following content:
{
"version": "2.0.0",
"tasks": [
{
"label": "Copy Theme Override",
"type": "shell",
"command": "php bin/magento dev:copy-theme-override ${file}",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
- Open the file to override.
- Run build task shortcut, by default
Shift + Cmd + B
orCtrl + Shift + B
on Windows/Linux.
- Create new build system
Tools > Build System > New Build System...
with the following content:
{
"shell_cmd": "php bin/magento dev:copy-theme-override $file",
"working_dir": "$folder"
}
- Open the file to override.
- Run Build task, by default
Cmd + B
orCtrl + B
on Windows/Linux.