Skip to content

Commit

Permalink
refactor: drop one-liner dependencies (#1224)
Browse files Browse the repository at this point in the history
* refactor: remove uniqs

Remove uniqs as it's a one-liner.

* refactor(postcss-merge-rules): drop vendors dep

Remove vendors as it'just a single array that did not change in
the last 5 years, and cssnano only uses it once.

* refactor(postcss-merge-rules): replace array with regex

* refactor(postcss-merge-rules): make vendor prefix regex more accepting

* Revert "refactor(postcss-merge-rules): make vendor prefix regex more accepting"

This reverts commit c310933.
  • Loading branch information
ludofischer committed Nov 9, 2021
1 parent 1bf0f88 commit 31d5c07
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 28 deletions.
3 changes: 1 addition & 2 deletions packages/postcss-merge-rules/package.json
Expand Up @@ -30,8 +30,7 @@
"browserslist": "^4.16.6",
"caniuse-api": "^3.0.0",
"cssnano-utils": "^2.0.1",
"postcss-selector-parser": "^6.0.5",
"vendors": "^1.0.3"
"postcss-selector-parser": "^6.0.5"
},
"bugs": {
"url": "https://github.com/cssnano/cssnano/issues"
Expand Down
11 changes: 5 additions & 6 deletions packages/postcss-merge-rules/src/lib/ensureCompatibility.js
@@ -1,6 +1,5 @@
import { isSupported } from 'caniuse-api';
import selectorParser from 'postcss-selector-parser';
import vendors from 'vendors';

const simpleSelectorRe = /^#?[-._a-z0-9 ]+$/i;

Expand All @@ -12,15 +11,15 @@ const cssFirstLine = 'css-first-line';
const cssInOutOfRange = 'css-in-out-of-range';
const formValidation = 'form-validation';

/** @type {string[]} */
const prefixes = vendors.map((v) => `-${v}-`);
const vendorPrefix =
/-(ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)-/;

/**
* @param {string} selector
* @return {string[]}
*/
export function filterPrefixes(selector) {
return prefixes.filter((prefix) => selector.indexOf(prefix) !== -1);
function filterPrefixes(selector) {
return selector.match(vendorPrefix);
}

// Internet Explorer use :-ms-input-placeholder.
Expand All @@ -42,7 +41,7 @@ export function sameVendor(selectorsA, selectorsB) {
* @return {boolean}
*/
export function noVendor(selector) {
return !filterPrefixes(selector).length;
return !vendorPrefix.test(selector);
}

export const pseudoElements = {
Expand Down
3 changes: 1 addition & 2 deletions packages/postcss-minify-params/package.json
Expand Up @@ -25,8 +25,7 @@
"alphanum-sort": "^1.0.2",
"browserslist": "^4.16.6",
"cssnano-utils": "^2.0.1",
"postcss-value-parser": "^4.1.0",
"uniqs": "^2.0.0"
"postcss-value-parser": "^4.1.0"
},
"scripts": {
"prebuild": "rimraf dist",
Expand Down
11 changes: 7 additions & 4 deletions packages/postcss-minify-params/src/index.js
@@ -1,7 +1,6 @@
import browserslist from 'browserslist';
import valueParser, { stringify } from 'postcss-value-parser';
import sort from 'alphanum-sort';
import uniqs from 'uniqs';
import { getArguments } from 'cssnano-utils';

/**
Expand All @@ -28,6 +27,12 @@ function removeNode(node) {
node.type = 'word';
}

function sortAndDedupe(items) {
return sort([...new Set(items)], {
insensitive: true,
}).join();
}

function transform(legacy, rule) {
const ruleName = rule.name.toLowerCase();

Expand Down Expand Up @@ -80,9 +85,7 @@ function transform(legacy, rule) {
}
}, true);

rule.params = sort(uniqs(getArguments(params).map(split)), {
insensitive: true,
}).join();
rule.params = sortAndDedupe(getArguments(params).map(split));

if (!rule.params.length) {
rule.raws.afterName = '';
Expand Down
3 changes: 1 addition & 2 deletions packages/postcss-unique-selectors/package.json
Expand Up @@ -27,8 +27,7 @@
"repository": "cssnano/cssnano",
"dependencies": {
"alphanum-sort": "^1.0.2",
"postcss-selector-parser": "^6.0.5",
"uniqs": "^2.0.0"
"postcss-selector-parser": "^6.0.5"
},
"bugs": {
"url": "https://github.com/cssnano/cssnano/issues"
Expand Down
5 changes: 3 additions & 2 deletions packages/postcss-unique-selectors/src/index.js
@@ -1,13 +1,14 @@
import sort from 'alphanum-sort';
import uniqs from 'uniqs';
import selectorParser from 'postcss-selector-parser';

function parseSelectors(selectors, callback) {
return selectorParser(callback).processSync(selectors);
}

function unique(rule) {
rule.selector = sort(uniqs(rule.selectors), { insensitive: true }).join();
rule.selector = sort([...new Set(rule.selectors)], {
insensitive: true,
}).join();
}

function pluginCreator() {
Expand Down
10 changes: 0 additions & 10 deletions yarn.lock
Expand Up @@ -8124,11 +8124,6 @@ unicode-property-aliases-ecmascript@^2.0.0:
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==

uniqs@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=

unique-filename@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
Expand Down Expand Up @@ -8221,11 +8216,6 @@ validate-npm-package-name@^3.0.0:
dependencies:
builtins "^1.0.3"

vendors@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==

verror@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
Expand Down

0 comments on commit 31d5c07

Please sign in to comment.