提取scss变量,交给js

原创
2017/06/15 16:54
阅读数 939
gulp.task('variables.js', function() {
  /**
   * 解析scss变量,注入到 variables.js 中
   * 具体解析哪些变量,在 variables.js 中定义
   */
  var t = fs.readFileSync('./node_modules/@alife/dpl-lst-scm/variables.scss', 'utf-8');
  var {variables = [] } = symbolsParser.parseSymbols(t);
  var variablesFile = require('./src/variables.js');
  result = Object.keys(variablesFile).reduce((buf, key)=>{
      let value = '';
      let times = 0;
      var vari = variables.find(v => v.name == key);
      if(vari) value = vari.value;
      // 如果值是变量,那么递归查找最终的值
      while(value.indexOf('$') > -1){
        times++;
        value = value.split(' ')[0]; //去除 xx !import的干扰
        var vari = variables.find(v => v.name == value);
        if(vari) value = vari.value;
        if(times == 10){
          value = '';
          times = 0;
        }; // 10 次找不到我就不找了。
      }

      buf[key] = value;
      return buf;
    }, {});
    let content = 'define("ascm-comp/lib-resale-theme/variables",function(require,exports,module){module.exports='+JSON.stringify(result)+'});'
    fs.writeFileSync('./build/variables.js', content);
});

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部