From 9472052747133c2d7b1bf80a8d7f23230811a87f Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Tue, 23 Nov 2021 16:36:13 +0800 Subject: [PATCH] fix: preprocess scss --- .../build/css-loader.conf.js | 4 ++-- .../sass-loader/dist/webpackImporter.js | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/packages/vue-cli-plugin-hbuilderx/build/css-loader.conf.js b/packages/vue-cli-plugin-hbuilderx/build/css-loader.conf.js index 2323500e6..8c26e35c9 100644 --- a/packages/vue-cli-plugin-hbuilderx/build/css-loader.conf.js +++ b/packages/vue-cli-plugin-hbuilderx/build/css-loader.conf.js @@ -56,14 +56,14 @@ if (isSass) { } const scssLoader = { - loader: 'sass-loader', + loader: '@dcloudio/vue-cli-plugin-uni/packages/sass-loader', options: { sourceMap: false } } const sassLoader = { - loader: 'sass-loader', + loader: '@dcloudio/vue-cli-plugin-uni/packages/sass-loader', options: { sourceMap: false } diff --git a/packages/vue-cli-plugin-uni/packages/sass-loader/dist/webpackImporter.js b/packages/vue-cli-plugin-uni/packages/sass-loader/dist/webpackImporter.js index 07a7ebd8c..b9a6a9b10 100644 --- a/packages/vue-cli-plugin-uni/packages/sass-loader/dist/webpackImporter.js +++ b/packages/vue-cli-plugin-uni/packages/sass-loader/dist/webpackImporter.js @@ -38,6 +38,11 @@ const matchCss = /\.css$/i; * @param {Function} addNormalizedDependency * @returns {Importer} */ +const fs = require('fs') +const preprocessor = require('../../webpack-preprocess-loader/preprocess/lib/preprocess') +const { + cssPreprocessOptions +} = require('@dcloudio/uni-cli-shared') function webpackImporter(resourcePath, resolve, addNormalizedDependency) { function dirContextFrom(fileContext) { @@ -51,6 +56,18 @@ function webpackImporter(resourcePath, resolve, addNormalizedDependency) { // Add the resolvedFilename as dependency. Although we're also using stats.includedFiles, this might come // in handy when an error occurs. In this case, we don't get stats.includedFiles from node-sass. addNormalizedDependency(resolvedFile); + const file = resolvedFile.replace(matchCss, '') + if (fs.existsSync(file)) { + const contents = fs.readFileSync(file, 'utf8') + if (contents.includes('#endif')) { + return { + file, + contents: preprocessor.preprocess(contents, cssPreprocessOptions.context, { + type: cssPreprocessOptions.type + }) + } + } + } return { // By removing the CSS file extension, we trigger node-sass to include the CSS file instead of just linking it. file: resolvedFile.replace(matchCss, '') @@ -72,4 +89,4 @@ function webpackImporter(resourcePath, resolve, addNormalizedDependency) { } var _default = webpackImporter; -exports.default = _default; \ No newline at end of file +exports.default = _default; -- GitLab