评论

教你如何在原生小程序中使用scss预处理语言

你是否曾经想过怎么使用scss而烦恼?是否发现自己写的样式越写越多越乱?没事,这里手把手教你如何在原生小程序框架也可以使用scss预处理语言,学习吧好家伙

我们会发现,如果不使用任何预处理语言,我们写代码会一连串很长又乱或者写着写着会很难一眼找到你想要的类名称,所以我们使用了预处理语言后,会提高我们开发效率和易维护代码,以下内容就是教你如何使用gulp处理scss预处理语言。内容很精彩千万别走开,不仅仅可以在小程序里面使用,还可以在其它地方使用。

安装gulp

  • 全局安装gulp npm install --global gulp-cli
  • 在项目目录下创建 package.json 文件 npm init
  • 安装 gulp,作为开发时依赖项
    • 安装gulp依赖 npm install --save-dev gulp
    • 安装修改文件名依赖 npm install --save-dev gulp-rename
    • 安装sass依赖 npm install sass gulp-sass --save-dev
    • 安装no-sass,因为gulp-sass需要 npm install --save-dev node-sass
  • 最后一步,终端输入gulp即可跑起?,好像缺少了必要配置文件,所有你是跑不起的,继续往下看哈

配置文件

const gulp = require('gulp');
const sass = require('gulp-sass')(require('sass'));
const rename = require('gulp-rename');
const { src, dest, watch } = gulp;

const scssFiles = ['**/*.scss', '!node_modules/**']; 

const compileSCSS = function() {
  // 所有文件夹下得scss文件,排除components目录,排除node_modules目录
  return src(scssFiles)
    .pipe(sass().on('error', sass.logError))
    .pipe(rename({extname: '.wxss'}))
    .pipe(dest('./', {overwrite: true})); // 编译出来的文件放回scss文件所在目录
};

module.exports.default = function() {
  watch(scssFiles, compileSCSS)
};
  • 按照上面安装和配置完成即可得到你想要的gulp把.scss打包成.wxss,这里有写热更新保存文件即可打包输出.wxss文件,然后去当前项目终端输入gulp,一个简单的打包工具完成了~

小程序上传代码过滤 *.scss文件,避免我们小程序包过大

  • 我们要找到文件project.config.js文件,然后在packOptions下的一个属性叫ignore写正则去过滤我们不需要的文件,减少小程序上传包的大小,例如下面简单示例:
"packOptions": {
    "ignore": [
      {
        "type": "regexp",
        "value": "\\.scss$"
      },
      {
        "type": "file",
        "value": "package-lock.json"
      },
      {
        "type": "file",
        "value": "gulpfile.js"
      }
     ]
}

可能运行时报错及解决方法

  • 如果你是安装依赖"gulp-sass": "^4.0.0",你的配置文件gulpfile.js的引入模块自定义变量sass可以写成const sass = require('gulp-sass')
  • 但是如果你安装依赖"gulp-sass": "^5.0.0"及以上我们配置文件gulpfile.js的引入模块自定义变量sass必须这样写const sass = require('gulp-sass')(require('sass'));,否者会报错,因为gulp sass 5没有默认的sass编译器,下面是错误提示:
gulp-sass 5 does not have a default Sass compiler; please set one yourself.
Both the `sass` and `node-sass` packages are permitted.

结束语

  • 如果看完还不会,可以留言哦,项目会推送到gitee欢迎查看或者start~
  • 如果想看更多小程序内容,也可以去我的掘金号查看查看,本文也会同步过去
  • 有进步,感觉有用记得点个赞哦
最后一次编辑于  2021-07-13  
点赞 3
收藏
评论

6 个评论

  • 哈罗哈皮
    哈罗哈皮
    2022-01-24

    现在框架已经很方便,可以直接支持预编译样式了,只需配置一下即可

    文档详情:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html#compileType

    2022-01-24
    赞同 2
    回复 2
    • 浊澜
      浊澜
      2022-10-13
      美滋滋啊
      2022-10-13
      回复
    • 端木孤莱SK
      端木孤莱SK
      03-31
      感谢。
      03-31
      1
      回复
  • RELAX
    RELAX
    2022-06-02

    这完全就是借助 gulp 将 scss 编译成后缀名为 .wxss 的 css 文件的能力。

    小程序开发工具和 IDE 居然不原生支持样式预处理器。。

    2022-06-02
    赞同 1
    回复 1
    • 哈罗哈皮
      哈罗哈皮
      2022-06-08
      小程序开发工具使用ts好像支持预处理了,但是好像也会出问题
      2022-06-08
      回复
  • ଲ
    2022-07-13

    请问下输入完gulp之后,为什么控制台一直卡在Starting ‘default’ 这里不变呢 也没提示报错

    2022-07-13
    赞同
    回复 1
    • 哈罗哈皮
      哈罗哈皮
      2022-07-13
      会不会写错配置了?
      2022-07-13
      回复
  • ZY
    ZY
    2022-06-01

    编译一下生成.min.css和.css,文件又多了,怎么配置

    2022-06-01
    赞同
    回复 1
    • 哈罗哈皮
      哈罗哈皮
      2022-06-08
      这是我的配置文件,你可以看看
      2022-06-08
      回复
  • 阿白
    阿白
    2022-01-20

    在project.config.json里配置一下就可以直接用sass了

    2022-01-20
    赞同
    回复 5
    • 郝悦
      郝悦
      2022-01-26
      配置sass后,用ci工具上传有问题,sass没有编译,请问有遇到吗?
      2022-01-26
      回复
    • 阿白
      阿白
      2022-02-28回复郝悦
      2022-02-28
      回复
    • Linzbia
      Linzbia
      2022-03-01回复阿白
      有用,配置后  有效果 ,但是sass里面是白色的,什么原因呢
      2022-03-01
      回复
    • Linzbia
      Linzbia
      2022-03-01回复阿白
      我是将less文件改成sass的
      2022-03-01
      回复
    • 大卫 菲德斯
      大卫 菲德斯
      2022-05-13回复Linzbia
      npm i 一下 不行就在商店安装一下拓展
      2022-05-13
      回复
  • 小灰灰
    小灰灰
    2022-01-19

    为什么我没有配置gulpfile.js文件也可以用scss

    2022-01-19
    赞同
    回复
登录 后发表内容