Set of front-end tools for Magento 2, based on Gulp.js
If you have any questions about this project let's go to offical Magento forum - Less to Sass Community Project
- Unix-like OS (please, do not ask about Windows support)
- Node.js LTS version (currently branch v6). We recommend to use avn to automate version switching. Required configuration is already added to repository as
.node-versionfile. - Gulp CLI global package -
yarn global add gulp-cliornpm install -g gulp-cli - Magento 2 project with SASS based theme i.e. SASS version of "Blank"
- Run
composer require snowdog/frontools - Go to package directory
cd vendor/snowdog/frontools - Run
yarnornpm install - Decide where you want to keep your config files.
You can store them in Frontools
configdirectory or indev/tools/frontools/config. There is agulp setuptask to copy all sample config files from theconfigtodev/tools/frontools/configand create a convenient symlinktoolsin the project root. If you want to keep config files inside frontoolsconfigdir, you have to handle this manually. - Define your themes in
themes.json.
Check config/themes.json.sample to get samples.
src- full path to themedest- full path topub/static/[theme_area]/[theme_vendor]/[theme_name]locale- array of available localesparent- name of parent themestylesDir- (defaultstyles) path to styles directory. Fortheme-blank-sassit'sstyles. By default Magento 2 useweb/css.disableSuffix- disable adding.minsufix using--prodflag.postcss- (deafult["plugins.autoprefixer()"]) PostCSS plugins config. Have to be an array.modules- list of modules witch you want to map inside your themeignore- array of ignore patterns
You will find sample config files for theses plugins in vendor/snowdog/frontools/config directory.
- Create browserSync configuration
- Create eslint configuration
- Create sass-lint configuration
- Create stylelint configuration
- Create svg-sprite configuration
babel- Run Babel, a compiler for writing next generation JavaScript.--theme name- Process single theme.--prod- Production output - minifies and uglyfy code.
clean- Removes/pub/staticdirectory content.csslint- Run stylelint based tests.--theme name- Process single theme.--ci- Enable throwing errors. Useful in CI/CD pipelines.
default- typegulpto see this readme in console.dev- Runs browserSync andinheritance,babel,styles,watchtasks.--theme name- Process single theme.--disableLinting- Disable SASS and CSS linting.--disableMaps- Toggles source maps generation.
eslint- Watch and run eslint on specified JS file.--file fileName- You have to specify what file you want to lint, fileName without .js.
inheritance- Create necessary symlinks to resolve theme styles inheritance and make the base for styles processing. You have to run in before styles compilation and after adding new files.sasslint- Run sass-lint based tests.--theme name- Process single theme.--ci- Enable throwing errors. Useful in CI/CD pipelines.
setup- Creates a convenient symlink from/toolsto/vendor/snowdog/frontoolsand copies all sample files if no configuration exists.--symlink name- If you don't want to usetoolsas the symlink you can specify another name.
styles- Use this task to manually trigger styles processing pipeline.--theme name- Process single theme.--disableMaps- Toggles source maps generation.--prod- Production output - minifies styles and add.minsufix.--ci- Enable throwing errors. Useful in CI/CD pipelines.
svg- Run svg-sprite to generate SVG sprite.--theme name- Process single theme.
watch- Watch for style changes and run processing tasks.--theme name- Process single theme.--disableLinting- Disable SASS and CSS linting.--disableMaps- Enable inline source maps generation.