Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

ignasbernotas's avatar

Latest node-sass update broke production environment

Hi there,

The latest gulp-sass update broke our production environment. The issue that caused it, was a bug of ours (@extending a class that doesn't exist) which is fine, and we fixed it. This error outputting has been implemented in 3.3.0 libsass, which has been used by node-sass and gulp-sass for a while, therefore I find it weird that the latest update has caused it just now.

The main issue is that envoyer.io wasn't able to pick up the error (I assume it wasn't streamed through stderr) and an erroneous build was deployed.

Here's gulp's output. I'm trying to figure out why the error wasn't caught by Envoyer.

Fetching Sass Source Files...
   - resources/assets/sass/app.scss


Saving To...
   - public_html/css/../styles.css

{ [Error: resources/assets/sass/inc/buttons/_button-group.scss
Error: ".btn-group-xs > .btn" failed to @extend ".btn-xs".
       The selector ".btn-xs" was not found.
       Use "@extend .btn-xs !optional" if the extend should be able to fail.
        on line 113 of resources/assets/sass/inc/buttons/_button-group.scss
>> .btn-group-xs > .btn { @extend .btn-xs; }
   -----------------------^
]
  formatted: 'Error: ".btn-group-xs > .btn" failed to @extend ".btn-xs".\n       The selector ".btn-xs" was not found.\n       Use "@extend .btn-xs !optional" if the extend should be able to fail.\n        on line 113 of resources/assets/sass/inc/buttons/_button-group.scss\n>> .btn-group-xs > .btn { @extend .btn-xs; }\n   -----------------------^\n',
  message: 'resources/assets/sass/inc/buttons/_button-group.scss\nError: ".btn-group-xs > .btn" failed to @extend ".btn-xs".\n       The selector ".btn-xs" was not found.\n       Use "@extend .btn-xs !optional" if the extend should be able to fail.\n        on line 113 of resources/assets/sass/inc/buttons/_button-group.scss\n>> .btn-group-xs > .btn { @extend .btn-xs; }\n   -----------------------^\n',
  column: 24,
  line: 113,
  file: '/Users/ignas/VagrantProjects/ali/resources/assets/sass/inc/buttons/_button-group.scss',
  status: 1,
  messageFormatted: '\u001b[4mresources/assets/sass/inc/buttons/_button-group.scss\u001b[24m\nError: ".btn-group-xs > .btn" failed to @extend ".btn-xs".\n       The selector ".btn-xs" was not found.\n       Use "@extend .btn-xs !optional" if the extend should be able to fail.\n        on line 113 of resources/assets/sass/inc/buttons/_button-group.scss\n>> .btn-group-xs > .btn { @extend .btn-xs; }\n   -----------------------^\n',
  messageOriginal: '".btn-group-xs > .btn" failed to @extend ".btn-xs".\nThe selector ".btn-xs" was not found.\nUse "@extend .btn-xs !optional" if the extend should be able to fail.',
  relativePath: 'resources/assets/sass/inc/buttons/_button-group.scss',
  name: 'Error',
  stack: 'Error: resources/assets/sass/inc/buttons/_button-group.scss\nError: ".btn-group-xs > .btn" failed to @extend ".btn-xs".\n       The selector ".btn-xs" was not found.\n       Use "@extend .btn-xs !optional" if the extend should be able to fail.\n        on line 113 of resources/assets/sass/inc/buttons/_button-group.scss\n>> .btn-group-xs > .btn { @extend .btn-xs; }\n   -----------------------^\n\n    at options.error (/Users/ignas/VagrantProjects/ali/node_modules/node-sass/lib/index.js:271:32)',
  showStack: false,
  showProperties: true,
  plugin: 'gulp-sass' }
[12:02:15] Finished 'sass' after 281 ms
0 likes
2 replies
joedawson's avatar

Is there a reason why you're using gulp-sass in your production environment? Surely a task for compiling sass etc. would be done during development? Not when Envoyer deploys...

2 likes
ignasbernotas's avatar
ignasbernotas
OP
Best Answer
Level 2

Mainly, just a quicker setup. How would you integrate Envoyer with a build server and what kind of a build server do you use? :) We've started using codeship.com, but haven't finished setting it up. Either way, how would you package the app prior to deployment?

Please or to participate in this conversation.