Skip to content

Commit dff48e5

Browse files
committed
Add selector black list
1 parent 17d861f commit dff48e5

File tree

4 files changed

+27
-1
lines changed

4 files changed

+27
-1
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ Default:
3737
root_value: 16,
3838
unit_precision: 5,
3939
prop_white_list: ['font', 'font-size', 'line-height', 'letter-spacing'],
40+
selector_black_list: [],
4041
replace: true,
4142
media_query: false
4243
}
@@ -45,6 +46,7 @@ Default:
4546
- `root_value` (Number) The root element font size.
4647
- `unit_precision` (Number) The decimal numbers to allow the REM units to grow to.
4748
- `prop_white_list` (Array) The properties that can change from px to rem.
49+
- `selector_black_list` (Array) The selectors to ignore and leave as px.
4850
- `replace` (Boolean) replaces rules containing rems instead of adding fallbacks.
4951
- `media_query` (Boolean) Allow px to be converted in media queries.
5052

index.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ module.exports = postcss.plugin('postcss-pxtorem', function (options) {
99
options = options || {};
1010
var rootValue = options.root_value || 16;
1111
var unitPrecision = options.unit_precision || 5;
12+
var selectorBlackList = options.selector_black_list || [];
1213
var propWhiteList = options.prop_white_list || ['font', 'font-size', 'line-height', 'letter-spacing'];
1314
var replace = (options.replace === false) ? false : true;
1415
var mediaQuery = options.media_query || false;
@@ -22,6 +23,18 @@ module.exports = postcss.plugin('postcss-pxtorem', function (options) {
2223
css.eachDecl(function (decl, i) {
2324
if (propWhiteList.indexOf(decl.prop) === -1) return;
2425

26+
var selector = decl.parent.selector;
27+
var match = false;
28+
for (var j=0; j<selectorBlackList.length; j++) {
29+
match = selector.match(selectorBlackList[j]);
30+
if (match) {
31+
break;
32+
}
33+
}
34+
if (match) {
35+
return;
36+
}
37+
2538
var rule = decl.parent;
2639
var value = decl.value;
2740

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "postcss-pxtorem",
33
"description": "A CSS post-processor that converts px to rem.",
4-
"version": "2.1.0",
4+
"version": "2.2.0",
55
"author": "cuth",
66
"license": "MIT",
77
"repository": {

spec/pxtorem-spec.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,17 @@ var css = '.rule { font-size: 15px }';
1212

1313
describe('pxtorem', function () {
1414

15+
it('should ignore selectors in the selector black list', function () {
16+
var rules = '.rule { font-size: 15px } .rule2 { font-size: 15px }';
17+
var expected = '.rule { font-size: 0.9375rem } .rule2 { font-size: 15px }';
18+
var options = {
19+
selector_black_list: ['.rule2']
20+
};
21+
var processed = postcss(pxtorem(options)).process(rules).css;
22+
23+
expect(processed).toBe(expected);
24+
});
25+
1526
it('should replace the px unit with rem', function () {
1627
var processed = postcss(pxtorem()).process(css).css;
1728
var expected = '.rule { font-size: 0.9375rem }';

0 commit comments

Comments
 (0)