Module for Sass processing during static content deployment with additional Gulp workflow to improve Magento 2 development speed. It compiles SCSS using scssphp
and process standard @import
instruction as well as @magento_import
.
- Install module via composer
composer require clawrock/magento2-sass-preprocessor
- Register module
php bin/magento setup:upgrade
- Compile Sass theme using
php bin/magento setup:static-content:deploy -f
- Magento 2.2 - 2.3
- PHP 7.0 - 7.2
- Node.js 10+
- Install Node.js
- Install Gulp configuration
php bin/magento dev:gulp:install
- Install Gulp and required dependencies
npm install
- Define theme configuration
php bin/magento dev:gulp:theme
- Symlink theme to pub/static folder
gulp exec:[theme_key]
- Compile SCSS
gulp scss:[theme_key]
- Watch for changes
gulp watch:[theme_key]
It also supports LESS, instead of SCSS use less like gulp less:[theme_key]
Use additional flags to enable more watchers:
--phtml
: reload when phtml file is changed--js
: reload when js file is changed
You can manually configure theme like in Gruntfile which is shipped with Magento or use php bin/magento dev:gulp:theme
command which will configure it for you.
Reference: Grunt configuration file
Shortcut | Full command |
---|---|
gulp build:scss:[theme] |
gulp exec:[theme] && gulp scss:[theme] |
gulp dev:scss:[theme] |
gulp exec:[theme] && gulp scss:[theme] && gulp watch:[theme] |
List of gulp commands:
gulp clean:[theme_key]
gulp deploy:[theme_key]
gulp exec:[theme_key]
gulp scss:[theme_key]
gulp less:[theme_key]
gulp watch:[theme_key]
gulp build:scss:[theme_key]
gulp build:less:[theme_key]
gulp dev:scss:[theme_key]
gulp dev:less:[theme_key]
Pass --proxy http://magento.test
argument to gulp watch:[theme_key]
or gulp dev:scss[theme_key]
where http://magento.test is Magento base url and BrowserSync will be enabled.
You can configure BrowserSync in dev/tools/gulp/config/browser-sync.json
.
Reference
gulp dev:scss:my_theme --proxy http://m2.test --phtml
If you had previously installed Grunt, please make sure you have removed package-lock.json and node_modules folder. Then run npm install
.
For development with enabled SSL please provide path to SSL key and certificate in BrowserSync configuration file.