diff --git a/install/package.json b/install/package.json index 09c07230a8..a3ec8dc909 100644 --- a/install/package.json +++ b/install/package.json @@ -165,6 +165,9 @@ "nyc": "15.1.0", "smtp-server": "3.11.0" }, + "optionalDependencies": { + "sass-embedded": "1.55.0" + }, "bugs": { "url": "https://github.com/NodeBB/NodeBB/issues" }, diff --git a/install/web.js b/install/web.js index b9e4c9fdd1..7a32cfa98d 100644 --- a/install/web.js +++ b/install/web.js @@ -6,7 +6,7 @@ const bodyParser = require('body-parser'); const fs = require('fs'); const path = require('path'); const childProcess = require('child_process'); -const sass = require('sass'); +const sass = require('../src/utils').getSass(); const webpack = require('webpack'); const nconf = require('nconf'); diff --git a/src/meta/configs.js b/src/meta/configs.js index 2f7206093b..ca53dc1494 100644 --- a/src/meta/configs.js +++ b/src/meta/configs.js @@ -240,7 +240,7 @@ async function saveRenderedCss(data) { if (!data.customCSS) { return; } - const sass = require('sass'); + const sass = require('../utils').getSass(); const scssOutput = await sass.compileStringAsync(data.customCSS, {}); data.renderedCustomCSS = scssOutput.css.toString(); } diff --git a/src/meta/minifier.js b/src/meta/minifier.js index 564c79a0f1..069dbbeb6d 100644 --- a/src/meta/minifier.js +++ b/src/meta/minifier.js @@ -4,7 +4,7 @@ const fs = require('fs'); const os = require('os'); const async = require('async'); const winston = require('winston'); -const sass = require('sass'); +const sass = require('../utils').getSass(); const postcss = require('postcss'); const autoprefixer = require('autoprefixer'); const clean = require('postcss-clean'); diff --git a/src/utils.js b/src/utils.js index 719abb50d2..2d0d2e7b9c 100644 --- a/src/utils.js +++ b/src/utils.js @@ -29,4 +29,13 @@ utils.generateUUID = function () { return rnd.join('-'); }; +utils.getSass = function () { + try { + const sass = require('sass-embedded'); + return sass; + } catch (_err) { + return require('sass'); + } +}; + module.exports = utils;