postcss-colormin 8.0.1 → 8.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE-MIT +1 -1
- package/README.md +1 -1
- package/package.json +28 -9
- package/src/index.js +21 -17
- package/src/lib/computeBrowsersToSupport.js +27 -0
- package/src/lib/getBrowsersForWebBuild.js +35 -0
- package/types/index.d.ts +14 -38
- package/types/index.d.ts.map +1 -1
- package/types/lib/computeBrowsersToSupport.d.ts +18 -0
- package/types/lib/computeBrowsersToSupport.d.ts.map +1 -0
- package/types/lib/getBrowsersForWebBuild.d.ts +3 -0
- package/types/lib/getBrowsersForWebBuild.d.ts.map +1 -0
- package/types/minifyColor.d.ts +9 -2
- package/types/minifyColor.d.ts.map +1 -1
package/LICENSE-MIT
CHANGED
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "postcss-colormin",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.2",
|
|
4
4
|
"description": "Minify colors in your CSS files with PostCSS.",
|
|
5
|
-
"
|
|
6
|
-
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"types": "./types/index.d.ts",
|
|
8
|
+
"default": "./src/index.js"
|
|
9
|
+
},
|
|
10
|
+
"./src": "./src/index.js",
|
|
11
|
+
"./src/index": "./src/index.js",
|
|
12
|
+
"./src/index.js": "./src/*.js",
|
|
13
|
+
"./src/minifyColor": "./src/minifyColor.js",
|
|
14
|
+
"./src/minifyColor.js": "./src/minifyColor.js",
|
|
15
|
+
"./package.json": "./package.json"
|
|
16
|
+
},
|
|
17
|
+
"imports": {
|
|
18
|
+
"#getBrowsersList": {
|
|
19
|
+
"node": "./src/lib/computeBrowsersToSupport.js",
|
|
20
|
+
"default": "./src/lib/getBrowsersForWebBuild.js"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
7
23
|
"files": [
|
|
8
24
|
"src",
|
|
9
25
|
"LICENSE-MIT",
|
|
@@ -23,12 +39,15 @@
|
|
|
23
39
|
"author": {
|
|
24
40
|
"name": "Ben Briggs",
|
|
25
41
|
"email": "beneb.info@gmail.com",
|
|
26
|
-
"url": "
|
|
42
|
+
"url": "https://beneb.info"
|
|
43
|
+
},
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "cssnano/cssnano"
|
|
27
47
|
},
|
|
28
|
-
"repository": "cssnano/cssnano",
|
|
29
48
|
"dependencies": {
|
|
30
|
-
"@colordx/core": "^5.
|
|
31
|
-
"browserslist": "^4.28.
|
|
49
|
+
"@colordx/core": "^5.5.0",
|
|
50
|
+
"browserslist": "^4.28.7",
|
|
32
51
|
"caniuse-api": "^4.0.0",
|
|
33
52
|
"postcss-value-parser": "^4.2.0"
|
|
34
53
|
},
|
|
@@ -39,9 +58,9 @@
|
|
|
39
58
|
"node": "^22.11.0 || ^24.11.0 || >=26.0"
|
|
40
59
|
},
|
|
41
60
|
"devDependencies": {
|
|
42
|
-
"postcss": "^8.5.
|
|
61
|
+
"postcss": "^8.5.25"
|
|
43
62
|
},
|
|
44
63
|
"peerDependencies": {
|
|
45
|
-
"postcss": "^8.5.
|
|
64
|
+
"postcss": "^8.5.25"
|
|
46
65
|
}
|
|
47
66
|
}
|
package/src/index.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
|
|
3
|
-
const
|
|
2
|
+
|
|
3
|
+
const getBrowsersList = require('#getBrowsersList');
|
|
4
4
|
const { isSupported } = require('caniuse-api');
|
|
5
5
|
const valueParser = require('postcss-value-parser');
|
|
6
6
|
const minifyColor = require('./minifyColor');
|
|
7
7
|
|
|
8
|
+
/** @import browserslist from 'browserslist' */
|
|
9
|
+
|
|
10
|
+
const rgbOrHslRegex = /^(rgb|hsl)a?$/i;
|
|
11
|
+
const notMinifiableRegex =
|
|
12
|
+
/^(composes|font|src$|filter|-webkit-tap-highlight-color)/i;
|
|
8
13
|
/**
|
|
9
14
|
* @param {{nodes: valueParser.Node[]}} parent
|
|
10
15
|
* @param {(node: valueParser.Node, index: number, parent: {nodes: valueParser.Node[]}) => false | undefined} callback
|
|
@@ -50,7 +55,7 @@ function transform(value, options) {
|
|
|
50
55
|
|
|
51
56
|
walk(parsed, (node, index, parent) => {
|
|
52
57
|
if (node.type === 'function') {
|
|
53
|
-
if (
|
|
58
|
+
if (rgbOrHslRegex.test(node.value)) {
|
|
54
59
|
const { value: originalValue } = node;
|
|
55
60
|
|
|
56
61
|
node.value = minifyColor(valueParser.stringify(node), options);
|
|
@@ -118,7 +123,6 @@ function addPluginDefaults(options, browsers) {
|
|
|
118
123
|
*/
|
|
119
124
|
|
|
120
125
|
/**
|
|
121
|
-
* @type {import('postcss').PluginCreator<Options>}
|
|
122
126
|
* @param {Options} config
|
|
123
127
|
* @return {import('postcss').Plugin}
|
|
124
128
|
*/
|
|
@@ -131,27 +135,25 @@ function pluginCreator(config = {}) {
|
|
|
131
135
|
*/
|
|
132
136
|
prepare(result) {
|
|
133
137
|
const { stats, env, from, file } = result.opts || {};
|
|
134
|
-
const browsers =
|
|
135
|
-
stats: config.stats || stats,
|
|
136
|
-
path: config.path || dirname(from || file || __filename),
|
|
137
|
-
env: config.env || env,
|
|
138
|
-
});
|
|
139
|
-
|
|
138
|
+
const browsers = getBrowsersList(config, stats, from, file, env);
|
|
140
139
|
const cache = new Map();
|
|
141
140
|
const options = addPluginDefaults(config, browsers);
|
|
142
141
|
|
|
143
142
|
return {
|
|
143
|
+
/**
|
|
144
|
+
* @param {import('postcss').Root} css
|
|
145
|
+
*/
|
|
144
146
|
OnceExit(css) {
|
|
145
147
|
css.walkDecls((decl) => {
|
|
146
|
-
if (
|
|
147
|
-
/^(composes|font|src$|filter|-webkit-tap-highlight-color)/i.test(
|
|
148
|
-
decl.prop
|
|
149
|
-
)
|
|
150
|
-
) {
|
|
148
|
+
if (notMinifiableRegex.test(decl.prop)) {
|
|
151
149
|
return;
|
|
152
150
|
}
|
|
153
151
|
|
|
154
|
-
if (
|
|
152
|
+
if (
|
|
153
|
+
/** @type Options */ (config).transformCustomProperties ===
|
|
154
|
+
false &&
|
|
155
|
+
decl.prop.startsWith('--')
|
|
156
|
+
) {
|
|
155
157
|
return;
|
|
156
158
|
}
|
|
157
159
|
|
|
@@ -181,4 +183,6 @@ function pluginCreator(config = {}) {
|
|
|
181
183
|
}
|
|
182
184
|
|
|
183
185
|
pluginCreator.postcss = true;
|
|
184
|
-
module.exports =
|
|
186
|
+
module.exports = /** @type {import('postcss').PluginCreator<Options>}*/ (
|
|
187
|
+
pluginCreator
|
|
188
|
+
);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const browserslist = require('browserslist');
|
|
4
|
+
const { dirname } = require('node:path');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param {{overrideBrowserslist?: string | string[] | undefined, stats?: browserslist.Options["stats"], path?: browserslist.Options["path"], env?: browserslist.Options["env"]}} options
|
|
9
|
+
* @param {browserslist.Options["stats"]} stats
|
|
10
|
+
* @param {string|undefined} from
|
|
11
|
+
* @param {string} [file]
|
|
12
|
+
* @param {browserslist.Options["env"]} [env]
|
|
13
|
+
* @returns {string[]}
|
|
14
|
+
*/
|
|
15
|
+
module.exports = function computeBrowsersToSupport(
|
|
16
|
+
options,
|
|
17
|
+
stats,
|
|
18
|
+
from,
|
|
19
|
+
file,
|
|
20
|
+
env
|
|
21
|
+
) {
|
|
22
|
+
return browserslist(options.overrideBrowserslist, {
|
|
23
|
+
stats: options.stats || stats,
|
|
24
|
+
path: options.path || dirname(from || file || __filename),
|
|
25
|
+
env: options.env || env,
|
|
26
|
+
});
|
|
27
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
module.exports = function () {
|
|
4
|
+
return [
|
|
5
|
+
'and_chr 150',
|
|
6
|
+
'and_ff 152',
|
|
7
|
+
'and_qq 14.9',
|
|
8
|
+
'and_uc 15.5',
|
|
9
|
+
'android 150',
|
|
10
|
+
'chrome 150',
|
|
11
|
+
'chrome 149',
|
|
12
|
+
'chrome 148',
|
|
13
|
+
'chrome 118',
|
|
14
|
+
'chrome 109',
|
|
15
|
+
'edge 150',
|
|
16
|
+
'edge 149',
|
|
17
|
+
'edge 148',
|
|
18
|
+
'firefox 152',
|
|
19
|
+
'firefox 151',
|
|
20
|
+
'firefox 140',
|
|
21
|
+
'ios_saf 26.5',
|
|
22
|
+
'ios_saf 26.4',
|
|
23
|
+
'ios_saf 26.3',
|
|
24
|
+
'ios_saf 18.5-18.7',
|
|
25
|
+
'kaios 3.0-3.1',
|
|
26
|
+
'op_mob 80',
|
|
27
|
+
'opera 131',
|
|
28
|
+
'opera 127',
|
|
29
|
+
'safari 26.5',
|
|
30
|
+
'safari 26.4',
|
|
31
|
+
'safari 26.3',
|
|
32
|
+
'samsung 30',
|
|
33
|
+
'samsung 29',
|
|
34
|
+
];
|
|
35
|
+
};
|
package/types/index.d.ts
CHANGED
|
@@ -1,45 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions
|
|
14
|
-
* @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions
|
|
15
|
-
* @typedef {MinifyColorOptions & AutoprefixerOptions & BrowserslistOptions} Options
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* @type {import('postcss').PluginCreator<Options>}
|
|
19
|
-
* @param {Options} config
|
|
20
|
-
* @return {import('postcss').Plugin}
|
|
21
|
-
*/
|
|
22
|
-
declare function pluginCreator(config?: Options): import("postcss").Plugin;
|
|
23
|
-
declare namespace pluginCreator {
|
|
24
|
-
export { postcss, MinifyColorOptions, AutoprefixerOptions, BrowserslistOptions, Options };
|
|
25
|
-
}
|
|
26
|
-
declare var postcss: true;
|
|
27
|
-
type MinifyColorOptions = {
|
|
28
|
-
hex?: boolean | undefined;
|
|
29
|
-
alphaHex?: boolean | undefined;
|
|
30
|
-
rgb?: boolean | undefined;
|
|
31
|
-
hsl?: boolean | undefined;
|
|
32
|
-
name?: boolean | undefined;
|
|
33
|
-
transparent?: boolean | undefined;
|
|
1
|
+
declare const _exports: import("postcss").PluginCreator<Options>;
|
|
2
|
+
export = _exports;
|
|
3
|
+
import type browserslist from 'browserslist';
|
|
4
|
+
export type MinifyColorOptions = {
|
|
5
|
+
hex?: boolean;
|
|
6
|
+
alphaHex?: boolean;
|
|
7
|
+
rgb?: boolean;
|
|
8
|
+
hsl?: boolean;
|
|
9
|
+
name?: boolean;
|
|
10
|
+
transparent?: boolean;
|
|
34
11
|
/**
|
|
35
12
|
* Whether to minify colors inside custom property values (default: true)
|
|
36
13
|
*/
|
|
37
|
-
transformCustomProperties?: boolean
|
|
14
|
+
transformCustomProperties?: boolean;
|
|
38
15
|
};
|
|
39
|
-
type AutoprefixerOptions = {
|
|
16
|
+
export type AutoprefixerOptions = {
|
|
40
17
|
overrideBrowserslist?: string | string[];
|
|
41
18
|
};
|
|
42
|
-
type BrowserslistOptions = Pick<browserslist.Options,
|
|
43
|
-
type Options = MinifyColorOptions & AutoprefixerOptions & BrowserslistOptions;
|
|
44
|
-
import browserslist = require("browserslist");
|
|
19
|
+
export type BrowserslistOptions = Pick<browserslist.Options, 'stats' | 'path' | 'env'>;
|
|
20
|
+
export type Options = MinifyColorOptions & AutoprefixerOptions & BrowserslistOptions;
|
|
45
21
|
//# sourceMappingURL=index.d.ts.map
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;AAOI,OAAQ,KAAA,YAAY,MAAM,cAAc,CAAA;AAqGzC,YAAkB,kBAAkB,GACpC;IAAqB,GAAG,AAAxB,CACA,EADW,OAAO,CAClB;IAAqB,QAAQ,AAA7B,CACA,EADW,OAAO,CAClB;IAAqB,GAAG,AAAxB,CACA,EADW,OAAO,CAClB;IAAqB,GAAG,AAAxB,CACA,EADW,OAAO,CAClB;IAAqB,IAAI,AAAzB,CACA,EADW,OAAO,CAClB;IAAqB,WAAW,AAAhC,CACA,EADW,OAAO,CAClB;;;;IAAqB,yBAAyB,AAA9C,CACF,EADa,OAAO,CACpB;CAAA,CAAA;AAGE,YAAwD,mBAAmB,GAAjE;IAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAAqB;AAC3E,YAAgE,mBAAmB,GAAzE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,CAAqB;AACnF,YAA0E,OAAO,GAAvE,kBAAkB,GAAG,mBAAmB,GAAG,mBAAmB,CAAS"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export = computeBrowsersToSupport;
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @param {{overrideBrowserslist?: string | string[] | undefined, stats?: browserslist.Options["stats"], path?: browserslist.Options["path"], env?: browserslist.Options["env"]}} options
|
|
5
|
+
* @param {browserslist.Options["stats"]} stats
|
|
6
|
+
* @param {string|undefined} from
|
|
7
|
+
* @param {string} [file]
|
|
8
|
+
* @param {browserslist.Options["env"]} [env]
|
|
9
|
+
* @returns {string[]}
|
|
10
|
+
*/
|
|
11
|
+
declare function computeBrowsersToSupport(options: {
|
|
12
|
+
overrideBrowserslist?: string | string[] | undefined;
|
|
13
|
+
stats?: browserslist.Options["stats"];
|
|
14
|
+
path?: browserslist.Options["path"];
|
|
15
|
+
env?: browserslist.Options["env"];
|
|
16
|
+
}, stats: browserslist.Options["stats"], from: string | undefined, file?: string, env?: browserslist.Options["env"]): string[];
|
|
17
|
+
import browserslist = require('browserslist');
|
|
18
|
+
//# sourceMappingURL=computeBrowsersToSupport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeBrowsersToSupport.d.ts","sourceRoot":"","sources":["../../src/lib/computeBrowsersToSupport.js"],"names":[],"mappings":";AAKA;;;;;;;;GAQG;0CAED,OAAO,EARE;IAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;CAQtK,EACP,KAAK,EARI,YAAY,CAAC,OAAO,CAAC,OAAO,CAQhC,EACL,IAAI,EARK,MAAM,GAAC,SAQZ,EACJ,IAAI,AARH,CACA,EADQ,MAQL,EACJ,GAAG,AARF,CACA,EADQ,YAAY,CAAC,OAAO,CAAC,KAAK,CAQhC,GAPQ,MAAM,EAAE;OAVf,YAAY,WAAW,cAAc"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBrowsersForWebBuild.d.ts","sourceRoot":"","sources":["../../src/lib/getBrowsersForWebBuild.js"],"names":[],"mappings":""}
|
package/types/minifyColor.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export = minifyColor;
|
|
2
|
+
/**
|
|
3
|
+
* Performs color value minification
|
|
4
|
+
*
|
|
5
|
+
* @param {string} input - CSS value
|
|
6
|
+
* @param {import('./index.js').MinifyColorOptions} options - object with colordx.minify() options
|
|
7
|
+
* @return {string}
|
|
8
|
+
*/
|
|
9
|
+
declare function minifyColor(input: string, options?: import('./index.js').MinifyColorOptions): string;
|
|
3
10
|
//# sourceMappingURL=minifyColor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minifyColor.d.ts","sourceRoot":"","sources":["../src/minifyColor.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"minifyColor.d.ts","sourceRoot":"","sources":["../src/minifyColor.js"],"names":[],"mappings":";AAQA;;;;;;GAMG;6BACmC,KAAK,EAJhC,MAIgC,EAAE,OAAO,GAHzC,OAAO,YAAY,EAAE,kBAGyB,GAF7C,MAAM"}
|