From 148502cd958f1c87fdc12f520d6249e915153cbf Mon Sep 17 00:00:00 2001 From: selfisekai Date: Fri, 6 Nov 2020 12:24:25 +0100 Subject: [PATCH] made dart sass default --- index.js | 49 ++++++++++++++++++++++++++++++++----------------- test/main.js | 1 + 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/index.js b/index.js index b0aed3b..83f17d5 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,6 @@ +/* eslint-disable global-require */ +/* eslint-disable import/no-extraneous-dependencies */ + const chalk = require('chalk'); const PluginError = require('plugin-error'); const replaceExtension = require('replace-ext'); @@ -9,9 +12,9 @@ const applySourceMap = require('vinyl-sourcemaps-apply'); const PLUGIN_NAME = 'gulp-sass'; -////////////////////////////// +// //////////////////////////// // Main Gulp Sass function -////////////////////////////// +// //////////////////////////// const gulpSass = (options, sync) => through.obj((file, enc, cb) => { // eslint-disable-line consistent-return if (file.isNull()) { return cb(null, file); @@ -59,9 +62,9 @@ const gulpSass = (options, sync) => through.obj((file, enc, cb) => { // eslint-d opts.sourceMapContents = true; } - ////////////////////////////// + // //////////////////////////// // Handles returning the file to the stream - ////////////////////////////// + // //////////////////////////// const filePush = (sassObj) => { let sassMap; let sassMapFile; @@ -106,9 +109,9 @@ const gulpSass = (options, sync) => through.obj((file, enc, cb) => { // eslint-d cb(null, file); }; - ////////////////////////////// + // //////////////////////////// // Handles error message - ////////////////////////////// + // //////////////////////////// const errorM = (error) => { const filePath = (error.file === 'stdin' ? file.path : error.file) || file.path; const relativePath = path.relative(process.cwd(), filePath); @@ -123,9 +126,9 @@ const gulpSass = (options, sync) => through.obj((file, enc, cb) => { // eslint-d }; if (sync !== true) { - ////////////////////////////// + // //////////////////////////// // Async Sass render - ////////////////////////////// + // //////////////////////////// const callback = (error, obj) => { // eslint-disable-line consistent-return if (error) { return errorM(error); @@ -135,9 +138,9 @@ const gulpSass = (options, sync) => through.obj((file, enc, cb) => { // eslint-d gulpSass.compiler.render(opts, callback); } else { - ////////////////////////////// + // //////////////////////////// // Sync Sass render - ////////////////////////////// + // //////////////////////////// try { filePush(gulpSass.compiler.renderSync(opts)); } catch (error) { @@ -146,23 +149,35 @@ const gulpSass = (options, sync) => through.obj((file, enc, cb) => { // eslint-d } }); -////////////////////////////// +// //////////////////////////// // Sync Sass render -////////////////////////////// +// //////////////////////////// gulpSass.sync = options => gulpSass(options, true); -////////////////////////////// +// //////////////////////////// // Log errors nicely -////////////////////////////// +// //////////////////////////// gulpSass.logError = function logError(error) { const message = new PluginError('sass', error.messageFormatted).toString(); process.stderr.write(`${message}\n`); this.emit('end'); }; -////////////////////////////// +// //////////////////////////// // Store compiler in a prop -////////////////////////////// -gulpSass.compiler = require('node-sass'); +// //////////////////////////// +gulpSass.compiler = (() => { + try { + // eslint-disable-next-line global-require import/no-extraneous-dependencies + return require('sass'); + } catch (e1) { + try { + // eslint-disable-next-line global-require import/no-extraneous-dependencies + return require('node-sass'); + } catch (e2) { + throw new Error(`${PLUGIN_NAME}: you need either sass or node-sass module in your project`); + } + } +})(); module.exports = gulpSass; diff --git a/test/main.js b/test/main.js index 2ae56f0..3b3a35b 100644 --- a/test/main.js +++ b/test/main.js @@ -3,6 +3,7 @@ const Vinyl = require('vinyl'); const path = require('path'); const fs = require('fs'); const sass = require('../index'); +sass.compiler = require('node-sass'); const rimraf = require('rimraf'); const gulp = require('gulp'); const sourcemaps = require('gulp-sourcemaps');