postcss-minify-params
Advanced tools
Comparing version
@@ -0,1 +1,6 @@ | ||
# 4.0.0-rc.0 | ||
* Breaking: Drops support for Node 0.12, we now require at least Node 4. | ||
* Breaking: Update PostCSS to 6.0.0. | ||
# 1.2.2 | ||
@@ -2,0 +7,0 @@ |
@@ -1,7 +0,31 @@ | ||
var postcss = require('postcss'); | ||
var valueParser = require('postcss-value-parser'); | ||
var stringify = valueParser.stringify; | ||
var sort = require('alphanum-sort'); | ||
var uniqs = require('uniqs'); | ||
'use strict'; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); | ||
var _postcss = require('postcss'); | ||
var _postcss2 = _interopRequireDefault(_postcss); | ||
var _postcssValueParser = require('postcss-value-parser'); | ||
var _postcssValueParser2 = _interopRequireDefault(_postcssValueParser); | ||
var _alphanumSort = require('alphanum-sort'); | ||
var _alphanumSort2 = _interopRequireDefault(_alphanumSort); | ||
var _uniqs = require('uniqs'); | ||
var _uniqs2 = _interopRequireDefault(_uniqs); | ||
var _cssnanoUtilGetArguments = require('cssnano-util-get-arguments'); | ||
var _cssnanoUtilGetArguments2 = _interopRequireDefault(_cssnanoUtilGetArguments); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
/** | ||
@@ -22,20 +46,6 @@ * Return the greatest common divisor | ||
function split(nodes, div) { | ||
var result = []; | ||
var i, max, node; | ||
var last = ''; | ||
for (i = 0, max = nodes.length; i < max; i += 1) { | ||
node = nodes[i]; | ||
if (node.type === 'div' && node.value === div) { | ||
result.push(last); | ||
last = ''; | ||
} else { | ||
last += stringify(node); | ||
} | ||
} | ||
result.push(last); | ||
return result; | ||
function split(args) { | ||
return args.map(function (arg) { | ||
return (0, _postcssValueParser.stringify)(arg); | ||
}).join(''); | ||
} | ||
@@ -48,61 +58,53 @@ | ||
module.exports = postcss.plugin('postcss-minify-params', function () { | ||
return function (css) { | ||
css.walkAtRules(function (rule) { | ||
if (!rule.params) { | ||
return; | ||
} | ||
function transform(rule) { | ||
if (!rule.params) { | ||
return; | ||
} | ||
var params = valueParser(rule.params); | ||
var params = (0, _postcssValueParser2.default)(rule.params); | ||
params.walk(function (node, index) { | ||
if (node.type === 'div' || node.type === 'function') { | ||
node.before = node.after = ''; | ||
if ( | ||
node.type === 'function' && | ||
node.nodes[4] && | ||
node.nodes[0].value.indexOf('-aspect-ratio') === 3 | ||
) { | ||
var ref = aspectRatio( | ||
node.nodes[2].value, | ||
node.nodes[4].value | ||
); | ||
var a = ref[0]; | ||
var b = ref[1]; | ||
node.nodes[2].value = a; | ||
node.nodes[4].value = b; | ||
} | ||
} else if (node.type === 'space') { | ||
node.value = ' '; | ||
} else if (node.type === 'word') { | ||
var prevWord = params.nodes[index - 2]; | ||
if ( | ||
node.value === 'all' && | ||
rule.name === 'media' && | ||
!prevWord | ||
) { | ||
var nextSpace = params.nodes[index + 1]; | ||
var nextWord = params.nodes[index + 2]; | ||
var secondSpace = params.nodes[index + 3]; | ||
if (nextWord && nextWord.value === 'and') { | ||
removeNode(nextWord); | ||
removeNode(nextSpace); | ||
if (secondSpace) { | ||
removeNode(secondSpace); | ||
} | ||
} | ||
removeNode(node); | ||
} | ||
params.walk(function (node, index) { | ||
if (node.type === 'div' || node.type === 'function') { | ||
node.before = node.after = ''; | ||
if (node.type === 'function' && node.nodes[4] && node.nodes[0].value.indexOf('-aspect-ratio') === 3) { | ||
var _aspectRatio = aspectRatio(node.nodes[2].value, node.nodes[4].value), | ||
_aspectRatio2 = _slicedToArray(_aspectRatio, 2), | ||
a = _aspectRatio2[0], | ||
b = _aspectRatio2[1]; | ||
node.nodes[2].value = a; | ||
node.nodes[4].value = b; | ||
} | ||
} else if (node.type === 'space') { | ||
node.value = ' '; | ||
} else { | ||
var prevWord = params.nodes[index - 2]; | ||
if (node.value === 'all' && rule.name === 'media' && !prevWord) { | ||
var nextSpace = params.nodes[index + 1]; | ||
var nextWord = params.nodes[index + 2]; | ||
var secondSpace = params.nodes[index + 3]; | ||
if (nextWord && nextWord.value === 'and') { | ||
removeNode(nextWord); | ||
removeNode(nextSpace); | ||
removeNode(secondSpace); | ||
} | ||
}, true); | ||
removeNode(node); | ||
} | ||
} | ||
}, true); | ||
rule.params = sort(uniqs(split(params.nodes, ',')), { | ||
insensitive: true | ||
}).join(); | ||
rule.params = (0, _alphanumSort2.default)((0, _uniqs2.default)((0, _cssnanoUtilGetArguments2.default)(params).map(split)), { | ||
insensitive: true | ||
}).join(); | ||
if (!rule.params.length) { | ||
rule.raws.afterName = ''; | ||
} | ||
}); | ||
if (!rule.params.length) { | ||
rule.raws.afterName = ''; | ||
} | ||
} | ||
exports.default = _postcss2.default.plugin('postcss-minify-params', function () { | ||
return function (css) { | ||
return css.walkAtRules(transform); | ||
}; | ||
}); | ||
module.exports = exports['default']; |
{ | ||
"name": "postcss-minify-params", | ||
"version": "1.2.2", | ||
"version": "4.0.0-rc.0", | ||
"description": "Minify at-rule params with PostCSS", | ||
@@ -19,38 +19,24 @@ "keywords": [ | ||
"license": "MIT", | ||
"repository": "ben-eb/postcss-minify-params", | ||
"repository": "ben-eb/cssnano", | ||
"bugs": { | ||
"url": "https://github.com/ben-eb/postcss-minify-params/issues" | ||
"url": "https://github.com/ben-eb/cssnano/issues" | ||
}, | ||
"homepage": "https://github.com/ben-eb/postcss-minify-params", | ||
"homepage": "https://github.com/ben-eb/cssnano", | ||
"dependencies": { | ||
"alphanum-sort": "^1.0.1", | ||
"postcss": "^5.0.2", | ||
"postcss-value-parser": "^3.0.2", | ||
"alphanum-sort": "^1.0.0", | ||
"cssnano-util-get-arguments": "^4.0.0-rc.0", | ||
"postcss": "^6.0.0", | ||
"postcss-value-parser": "^3.0.0", | ||
"uniqs": "^2.0.0" | ||
}, | ||
"scripts": { | ||
"prepublish": "del-cli dist && cross-env BABEL_ENV=publish buble src -o dist", | ||
"pretest": "eslint src", | ||
"report": "nyc report --reporter=html", | ||
"test": "cross-env BABEL_ENV=test nyc mocha test --compilers js:buble/register" | ||
"prepublish": "cross-env BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/" | ||
}, | ||
"devDependencies": { | ||
"buble": "^0.12.5", | ||
"cross-env": "^2.0.0", | ||
"del-cli": "^0.2.0", | ||
"eslint": "^2.13.1", | ||
"eslint-config-postcss": "^2.0.2", | ||
"mocha": "^2.5.3", | ||
"nyc": "^7.0.0" | ||
"babel-cli": "^6.0.0", | ||
"cross-env": "^3.0.0" | ||
}, | ||
"eslintConfig": { | ||
"extends": "postcss", | ||
"env": { | ||
"mocha": true | ||
} | ||
}, | ||
"nyc": { | ||
"sourceMap": true, | ||
"instrument": true | ||
"engines": { | ||
"node": ">=4" | ||
} | ||
} |
@@ -29,2 +29,8 @@ # postcss-minify-params [![Build Status][ci-img]][ci] | ||
## Contributors | ||
See [CONTRIBUTORS.md](https://github.com/ben-eb/cssnano/blob/master/CONTRIBUTORS.md). | ||
## License | ||
MIT © [Bogdan Chadkin](mailto:trysound@yandex.ru) | ||
@@ -31,0 +37,0 @@ |
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
7225
5.85%2
-71.43%0
-100%40
17.65%5
25%83
-9.78%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated
Updated