Advertisement
Guest User

Untitled

a guest
Apr 4th, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let mix = require('laravel-mix'),
  2.     postcss = require('postcss'),
  3.     sprites = require('postcss-sprites'),
  4.     publicPath = 'public/assets/front',
  5.     resourcePath = 'resources/assets/front',
  6.     spritePathInSCSS = 'images/sprites/';
  7.  
  8.  
  9. mix .setPublicPath(path.normalize(publicPath))
  10.     .sass(`${resourcePath}/sass/base.scss`, 'css/base.css')
  11.     .options({
  12.         autoprefixer: {
  13.             options: {
  14.                 browsers: ['last 2 versions']
  15.             }
  16.         },
  17.         resourceRoot: '../',
  18.         postCss: [
  19.             sprites({
  20.                 spritePath: `${publicPath}/images`,
  21.                 filterBy: image => {
  22.                     if (image['originalUrl'].indexOf(spritePathInSCSS) === -1) {
  23.                         return Promise.reject();
  24.                     }
  25.                     return Promise.resolve();
  26.                 },
  27.                 spritesmith: {
  28.                     padding: 5
  29.                 },
  30.                 verbose: true,
  31.                 hooks: {
  32.                     onUpdateRule: function(rule, token, image) {
  33.  
  34.                         let backgroundSizeX = (image.spriteWidth / image.coords.width) * 100,
  35.                             backgroundSizeY = (image.spriteHeight / image.coords.height) * 100,
  36.                             backgroundPositionX = (image.coords.x / (image.spriteWidth - image.coords.width)) * 100,
  37.                             backgroundPositionY = (image.coords.y / (image.spriteHeight - image.coords.height)) * 100;
  38.  
  39.                         backgroundSizeX = isNaN(backgroundSizeX) ? 0 : backgroundSizeX;
  40.                         backgroundSizeY = isNaN(backgroundSizeY) ? 0 : backgroundSizeY;
  41.                         backgroundPositionX = isNaN(backgroundPositionX) ? 0 : backgroundPositionX;
  42.                         backgroundPositionY = isNaN(backgroundPositionY) ? 0 : backgroundPositionY;
  43.  
  44.                         const backgroundImage = postcss.decl({
  45.                             prop: 'background-image',
  46.                             value: `url('${image.spriteUrl}')`
  47.                         });
  48.  
  49.                         //image.spriteUrl: '../../../../public/assets/front/images/sprite.svg'
  50.  
  51.                         const backgroundSize = postcss.decl({
  52.                             prop: 'background-size',
  53.                             value: `${backgroundSizeX}% ${backgroundSizeY}%`
  54.                         });
  55.  
  56.                         const backgroundPosition = postcss.decl({
  57.                             prop: 'background-position',
  58.                             value: `${backgroundPositionX}% ${backgroundPositionY}%`
  59.                         });
  60.  
  61.                         rule.insertAfter(token, backgroundImage);
  62.                         rule.insertAfter(backgroundImage, backgroundPosition);
  63.                         rule.insertAfter(backgroundPosition, backgroundSize);
  64.                     }
  65.                 }
  66.             })
  67.         ]
  68.     })
  69.     .js(`${resourcePath}/js/app.js`, 'js/app.js')
  70.     .copy(`${resourcePath}/images/single`, `${publicPath}/images`, false)
  71.     .version();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement