Skip to content

Commit ad5a58d

Browse files
committed
@规则筛选功能
1 parent 9aa0717 commit ad5a58d

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

index.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,14 @@
44
const postcss = require('postcss');
55
const selectorParser = require('postcss-selector-parser');
66
const replaceTagSelector = require('./lib/wxmlTagMap');
7+
const { isRegExp } = require('./lib/utils');
78

89
const defConfig = {
910
cleanSelector: ['*'],
11+
cleanAtRule: [{
12+
name: 'media',
13+
params: ['print']
14+
}],
1015
remToRpx: 100,
1116
replaceTagSelector
1217
};
@@ -20,6 +25,23 @@ module.exports = postcss.plugin('postcss-mpvue-wxss', function (options) {
2025

2126
return function (root) {
2227
// Transform CSS AST here: root, result
28+
root.walkAtRules(rule => {
29+
// 清理不支持的@开头规则
30+
for (cleanRule of options.cleanAtRule) {
31+
if (cleanRule.name !== rule.name) {
32+
continue;
33+
}
34+
if (!cleanRule.params) {
35+
return rule.remove();
36+
}
37+
for (param of cleanRule.params) {
38+
if (isRegExp(param) && param.test(rule.params) || param === rule.params) {
39+
return rule.remove();
40+
}
41+
}
42+
}
43+
});
44+
2345
root.walkRules(rule => {
2446
const { selector } = rule || {};
2547

@@ -43,7 +65,7 @@ module.exports = postcss.plugin('postcss-mpvue-wxss', function (options) {
4365
// 清理不支持的选择器
4466
if (options.cleanSelector.includes(n.value)) {
4567
// return n.value = 'view';
46-
return rule.remove()
68+
return rule.remove();
4769
}
4870
})
4971
})

lib/utils.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = {
2+
isRegExp: function (arg) {
3+
return Object.prototype.toString.call(arg) === '[object RegExp]';
4+
}
5+
}

0 commit comments

Comments
 (0)