@hao360/cube-css-loader
Advanced tools
+35
-19
| const css = require('css'); | ||
| const loaderUtils = require('loader-utils'); | ||
| global.cubeWcssData = global.cubeWcssData || {}; | ||
| /** 添加样式命名空间前缀 */ | ||
@@ -87,23 +85,41 @@ function addPrefix(cssAst, preSelector, widthRules){ | ||
| module.exports = function(content, map, meta) { | ||
| let options = loaderUtils.getOptions(this); | ||
| let cssObj = css.parse(content); | ||
| let widthRules = []; | ||
| cssObj.stylesheet = addPrefix(cssObj.stylesheet, options.pre || '.cube-container', widthRules); | ||
| const result = css.stringify(cssObj, { | ||
| compress : options.compress || process.env.NODE_ENV !== 'development', | ||
| sourcemap: true | ||
| }); | ||
| /** 添加响应式宽度数据 */ | ||
| if(widthRules.length){ | ||
| if(!global.cubeWcssData){ | ||
| global.cubeWcssData = {}; | ||
| } | ||
| if(/\.wcss$/.test(this.resourcePath)){ | ||
| /** 处理动态css */ | ||
| const callback = this.async(); | ||
| setTimeout(() => { | ||
| /** 需要等到动态css编译生成 */ | ||
| const cubeWcssData = global.cubeWcssData; | ||
| let wcss = []; | ||
| for (let f in cubeWcssData) { | ||
| this.dependency(f); | ||
| wcss = wcss.concat(cubeWcssData[f]); | ||
| } | ||
| callback(null, `module.exports = ${JSON.stringify(wcss)};`) | ||
| }, 100) | ||
| return; | ||
| } else { | ||
| /** 处理css */ | ||
| let options = loaderUtils.getOptions(this); | ||
| let cssObj = css.parse(content); | ||
| let widthRules = []; | ||
| cssObj.stylesheet = addPrefix(cssObj.stylesheet, options.pre || '.cube-container', widthRules); | ||
| const result = css.stringify(cssObj, { | ||
| compress : options.compress || process.env.NODE_ENV !== 'development', | ||
| sourcemap: true | ||
| }); | ||
| /** 添加响应式宽度数据 */ | ||
| const wcssData = responsiveWidth(widthRules, options.compress); | ||
| global.cubeWcssData[this.resourcePath] = wcssData; | ||
| } | ||
| if(global.cubeCssData){ | ||
| global.cubeCssData[this.resourcePath] = result.code; | ||
| return 'module.exports = "/*__cube_css_here__*/";'; | ||
| } else { | ||
| this.callback(null, 'module.exports = `' + result.code + '`;', result.map, cssObj); | ||
| return; | ||
| if(global.cubeCssData){ | ||
| global.cubeCssData[this.resourcePath] = result.code; | ||
| return 'module.exports = "/*__cube_css_here__*/";'; | ||
| } else { | ||
| this.callback(null, 'module.exports = `' + result.code + '`;', result.map, cssObj); | ||
| return; | ||
| } | ||
| } | ||
| }; |
+1
-1
| { | ||
| "name": "@hao360/cube-css-loader", | ||
| "version": "1.1.1", | ||
| "version": "1.2.0", | ||
| "description": "cube css loader", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
4585
12.24%118
16.83%