stylehacks 4.0.0-rc.2 → 4.0.0
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/dist/dictionary/browsers.js +6 -6
- package/dist/dictionary/identifiers.js +4 -4
- package/dist/dictionary/postcss.js +3 -3
- package/dist/dictionary/tags.js +2 -2
- package/dist/exists.js +1 -1
- package/dist/index.js +14 -20
- package/dist/isMixin.js +1 -2
- package/dist/plugin.js +35 -72
- package/dist/plugins/bodyEmpty.js +2 -2
- package/dist/plugins/htmlCombinatorCommentBody.js +2 -2
- package/dist/plugins/htmlFirstChild.js +2 -2
- package/dist/plugins/important.js +2 -2
- package/dist/plugins/leadingStar.js +8 -12
- package/dist/plugins/leadingUnderscore.js +1 -2
- package/dist/plugins/mediaSlash0.js +1 -1
- package/dist/plugins/mediaSlash0Slash9.js +1 -1
- package/dist/plugins/mediaSlash9.js +1 -1
- package/dist/plugins/slash9.js +1 -1
- package/dist/plugins/starHtml.js +2 -2
- package/dist/plugins/trailingSlashComma.js +2 -3
- package/package.json +8 -8
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
const FF_2 = exports.FF_2 = 'firefox 2';
|
|
7
|
+
const IE_5_5 = exports.IE_5_5 = 'ie 5.5';
|
|
8
|
+
const IE_6 = exports.IE_6 = 'ie 6';
|
|
9
|
+
const IE_7 = exports.IE_7 = 'ie 7';
|
|
10
|
+
const IE_8 = exports.IE_8 = 'ie 8';
|
|
11
|
+
const OP_9 = exports.OP_9 = 'opera 9';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
const MEDIA_QUERY = exports.MEDIA_QUERY = 'media query';
|
|
7
|
+
const PROPERTY = exports.PROPERTY = 'property';
|
|
8
|
+
const SELECTOR = exports.SELECTOR = 'selector';
|
|
9
|
+
const VALUE = exports.VALUE = 'value';
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const ATRULE = exports.ATRULE = 'atrule';
|
|
7
|
+
const DECL = exports.DECL = 'decl';
|
|
8
|
+
const RULE = exports.RULE = 'rule';
|
package/dist/dictionary/tags.js
CHANGED
package/dist/exists.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = exists;
|
|
7
7
|
function exists(selector, index, value) {
|
|
8
|
-
|
|
8
|
+
const node = selector.at(index);
|
|
9
9
|
return node && node.value === value;
|
|
10
10
|
}
|
|
11
11
|
module.exports = exports["default"];
|
package/dist/index.js
CHANGED
|
@@ -18,32 +18,26 @@ var _plugins2 = _interopRequireDefault(_plugins);
|
|
|
18
18
|
|
|
19
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return function (css, result) {
|
|
27
|
-
var resultOpts = result.opts || {};
|
|
28
|
-
var browsers = (0, _browserslist2.default)(null, {
|
|
21
|
+
const stylehacks = _postcss2.default.plugin('stylehacks', (opts = {}) => {
|
|
22
|
+
return (css, result) => {
|
|
23
|
+
const resultOpts = result.opts || {};
|
|
24
|
+
const browsers = (0, _browserslist2.default)(null, {
|
|
29
25
|
stats: resultOpts.stats,
|
|
30
26
|
path: __dirname,
|
|
31
27
|
env: resultOpts.env
|
|
32
28
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return hack.targets.some(
|
|
37
|
-
return browser === target;
|
|
38
|
-
});
|
|
29
|
+
const processors = _plugins2.default.reduce((list, Plugin) => {
|
|
30
|
+
const hack = new Plugin(result);
|
|
31
|
+
const applied = browsers.some(browser => {
|
|
32
|
+
return hack.targets.some(target => browser === target);
|
|
39
33
|
});
|
|
40
34
|
if (applied) {
|
|
41
35
|
return list;
|
|
42
36
|
}
|
|
43
|
-
return [
|
|
37
|
+
return [...list, hack];
|
|
44
38
|
}, []);
|
|
45
|
-
css.walk(
|
|
46
|
-
processors.forEach(
|
|
39
|
+
css.walk(node => {
|
|
40
|
+
processors.forEach(proc => {
|
|
47
41
|
if (!~proc.nodeTypes.indexOf(node.type)) {
|
|
48
42
|
return;
|
|
49
43
|
}
|
|
@@ -56,9 +50,9 @@ var stylehacks = _postcss2.default.plugin('stylehacks', function () {
|
|
|
56
50
|
};
|
|
57
51
|
});
|
|
58
52
|
|
|
59
|
-
stylehacks.detect =
|
|
60
|
-
return _plugins2.default.some(
|
|
61
|
-
|
|
53
|
+
stylehacks.detect = node => {
|
|
54
|
+
return _plugins2.default.some(Plugin => {
|
|
55
|
+
const hack = new Plugin();
|
|
62
56
|
return hack.any(node);
|
|
63
57
|
});
|
|
64
58
|
};
|
package/dist/isMixin.js
CHANGED
|
@@ -5,9 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = isMixin;
|
|
7
7
|
function isMixin(node) {
|
|
8
|
-
|
|
8
|
+
const { selector } = node;
|
|
9
9
|
// If the selector ends with a ':' it is likely a part of a custom mixin.
|
|
10
|
-
|
|
11
10
|
if (!selector || selector[selector.length - 1] === ':') {
|
|
12
11
|
return true;
|
|
13
12
|
}
|
package/dist/plugin.js
CHANGED
|
@@ -3,92 +3,55 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
|
-
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
8
|
-
|
|
9
6
|
exports.default = plugin;
|
|
10
|
-
|
|
11
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
12
|
-
|
|
13
7
|
function plugin(targets, nodeTypes, detect) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
_classCallCheck(this, Plugin);
|
|
17
|
-
|
|
8
|
+
class Plugin {
|
|
9
|
+
constructor(result) {
|
|
18
10
|
this.nodes = [];
|
|
19
11
|
this.result = result;
|
|
20
12
|
this.targets = targets;
|
|
21
13
|
this.nodeTypes = nodeTypes;
|
|
22
14
|
}
|
|
23
15
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
this.nodes.push(node);
|
|
32
|
-
}
|
|
33
|
-
}, {
|
|
34
|
-
key: "any",
|
|
35
|
-
value: function any(node) {
|
|
36
|
-
if (~this.nodeTypes.indexOf(node.type)) {
|
|
37
|
-
detect.apply(this, arguments);
|
|
38
|
-
return !!node._stylehacks;
|
|
39
|
-
}
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
}, {
|
|
43
|
-
key: "detectAndResolve",
|
|
44
|
-
value: function detectAndResolve() {
|
|
45
|
-
this.nodes = [];
|
|
46
|
-
|
|
47
|
-
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
48
|
-
args[_key] = arguments[_key];
|
|
49
|
-
}
|
|
16
|
+
push(node, metadata) {
|
|
17
|
+
node._stylehacks = Object.assign({}, metadata, {
|
|
18
|
+
message: `Bad ${metadata.identifier}: ${metadata.hack}`,
|
|
19
|
+
browsers: this.targets
|
|
20
|
+
});
|
|
21
|
+
this.nodes.push(node);
|
|
22
|
+
}
|
|
50
23
|
|
|
51
|
-
|
|
52
|
-
|
|
24
|
+
any(node) {
|
|
25
|
+
if (~this.nodeTypes.indexOf(node.type)) {
|
|
26
|
+
detect.apply(this, arguments);
|
|
27
|
+
return !!node._stylehacks;
|
|
53
28
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
value: function detectAndWarn() {
|
|
57
|
-
this.nodes = [];
|
|
58
|
-
|
|
59
|
-
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
60
|
-
args[_key2] = arguments[_key2];
|
|
61
|
-
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
62
31
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
value: function resolve() {
|
|
69
|
-
return this.nodes.forEach(function (node) {
|
|
70
|
-
return node.remove();
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}, {
|
|
74
|
-
key: "warn",
|
|
75
|
-
value: function warn() {
|
|
76
|
-
var _this = this;
|
|
32
|
+
detectAndResolve(...args) {
|
|
33
|
+
this.nodes = [];
|
|
34
|
+
detect.apply(this, args);
|
|
35
|
+
return this.resolve();
|
|
36
|
+
}
|
|
77
37
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
hack = _node$_stylehacks.hack;
|
|
38
|
+
detectAndWarn(...args) {
|
|
39
|
+
this.nodes = [];
|
|
40
|
+
detect.apply(this, args);
|
|
41
|
+
return this.warn();
|
|
42
|
+
}
|
|
84
43
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}]);
|
|
44
|
+
resolve() {
|
|
45
|
+
return this.nodes.forEach(node => node.remove());
|
|
46
|
+
}
|
|
89
47
|
|
|
90
|
-
|
|
91
|
-
|
|
48
|
+
warn() {
|
|
49
|
+
return this.nodes.forEach(node => {
|
|
50
|
+
const { message, browsers, identifier, hack } = node._stylehacks;
|
|
51
|
+
return node.warn(this.result, message, { browsers, identifier, hack });
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
92
55
|
|
|
93
56
|
return Plugin;
|
|
94
57
|
}
|
|
@@ -31,8 +31,8 @@ var _tags = require('../dictionary/tags');
|
|
|
31
31
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
32
32
|
|
|
33
33
|
function analyse(ctx, rule) {
|
|
34
|
-
return
|
|
35
|
-
selectors.each(
|
|
34
|
+
return selectors => {
|
|
35
|
+
selectors.each(selector => {
|
|
36
36
|
if ((0, _exists2.default)(selector, 0, _tags.BODY) && (0, _exists2.default)(selector, 1, ':empty') && (0, _exists2.default)(selector, 2, ' ') && selector.at(3)) {
|
|
37
37
|
ctx.push(rule, {
|
|
38
38
|
identifier: _identifiers.SELECTOR,
|
|
@@ -31,8 +31,8 @@ var _tags = require('../dictionary/tags');
|
|
|
31
31
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
32
32
|
|
|
33
33
|
function analyse(ctx, rule) {
|
|
34
|
-
return
|
|
35
|
-
selectors.each(
|
|
34
|
+
return selectors => {
|
|
35
|
+
selectors.each(selector => {
|
|
36
36
|
if ((0, _exists2.default)(selector, 0, _tags.HTML) && ((0, _exists2.default)(selector, 1, '>') || (0, _exists2.default)(selector, 1, '~')) && selector.at(2) && selector.at(2).type === 'comment' && (0, _exists2.default)(selector, 3, ' ') && (0, _exists2.default)(selector, 4, _tags.BODY) && (0, _exists2.default)(selector, 5, ' ') && selector.at(6)) {
|
|
37
37
|
ctx.push(rule, {
|
|
38
38
|
identifier: _identifiers.SELECTOR,
|
|
@@ -31,8 +31,8 @@ var _tags = require('../dictionary/tags');
|
|
|
31
31
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
32
32
|
|
|
33
33
|
function analyse(ctx, rule) {
|
|
34
|
-
return
|
|
35
|
-
selectors.each(
|
|
34
|
+
return selectors => {
|
|
35
|
+
selectors.each(selector => {
|
|
36
36
|
if ((0, _exists2.default)(selector, 0, _tags.HTML) && (0, _exists2.default)(selector, 1, ':first-child') && (0, _exists2.default)(selector, 2, ' ') && selector.at(3)) {
|
|
37
37
|
ctx.push(rule, {
|
|
38
38
|
identifier: _identifiers.SELECTOR,
|
|
@@ -15,9 +15,9 @@ var _postcss = require('../dictionary/postcss');
|
|
|
15
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
16
|
|
|
17
17
|
exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.DECL], function (decl) {
|
|
18
|
-
|
|
18
|
+
const match = decl.value.match(/!\w/);
|
|
19
19
|
if (match) {
|
|
20
|
-
|
|
20
|
+
const hack = decl.value.substr(match.index, decl.value.length - 1);
|
|
21
21
|
this.push(decl, {
|
|
22
22
|
identifier: '!important',
|
|
23
23
|
hack
|
|
@@ -16,31 +16,28 @@ var _postcss = require('../dictionary/postcss');
|
|
|
16
16
|
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
const hacks = '!_$_&_*_)_=_%_+_,_._/_`_]_#_~_?_:_|'.split('_');
|
|
20
20
|
|
|
21
21
|
exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.ATRULE, _postcss.DECL], function (node) {
|
|
22
|
-
var _this = this;
|
|
23
|
-
|
|
24
22
|
if (node.type === _postcss.DECL) {
|
|
25
23
|
// some values are not picked up by before, so ensure they are
|
|
26
24
|
// at the beginning of the value
|
|
27
|
-
hacks.some(
|
|
25
|
+
hacks.some(hack => {
|
|
28
26
|
if (!node.prop.indexOf(hack)) {
|
|
29
|
-
|
|
27
|
+
this.push(node, {
|
|
30
28
|
identifier: _identifiers.PROPERTY,
|
|
31
29
|
hack: node.prop
|
|
32
30
|
});
|
|
33
31
|
return true;
|
|
34
32
|
}
|
|
35
33
|
});
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
let { before } = node.raws;
|
|
38
35
|
if (!before) {
|
|
39
36
|
return;
|
|
40
37
|
}
|
|
41
|
-
hacks.some(
|
|
38
|
+
hacks.some(hack => {
|
|
42
39
|
if (~before.indexOf(hack)) {
|
|
43
|
-
|
|
40
|
+
this.push(node, {
|
|
44
41
|
identifier: _identifiers.PROPERTY,
|
|
45
42
|
hack: `${before.trim()}${node.prop}`
|
|
46
43
|
});
|
|
@@ -49,9 +46,8 @@ exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _brow
|
|
|
49
46
|
});
|
|
50
47
|
} else {
|
|
51
48
|
// test for the @property: value; hack
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
var len = name.length - 1;
|
|
49
|
+
let { name } = node;
|
|
50
|
+
let len = name.length - 1;
|
|
55
51
|
if (name.lastIndexOf(':') === len) {
|
|
56
52
|
this.push(node, {
|
|
57
53
|
identifier: _identifiers.PROPERTY,
|
|
@@ -21,8 +21,7 @@ var _postcss3 = require('../dictionary/postcss');
|
|
|
21
21
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
22
|
|
|
23
23
|
exports.default = (0, _plugin2.default)([_browsers.IE_6], [_postcss3.DECL], function (decl) {
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
const { before } = decl.raws;
|
|
26
25
|
if (before && ~before.indexOf('_')) {
|
|
27
26
|
this.push(decl, {
|
|
28
27
|
identifier: _identifiers.PROPERTY,
|
|
@@ -17,7 +17,7 @@ var _postcss = require('../dictionary/postcss');
|
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
18
|
|
|
19
19
|
exports.default = (0, _plugin2.default)([_browsers.IE_8], [_postcss.ATRULE], function (rule) {
|
|
20
|
-
|
|
20
|
+
const params = rule.params.trim();
|
|
21
21
|
if (params === '\\0screen') {
|
|
22
22
|
this.push(rule, {
|
|
23
23
|
identifier: _identifiers.MEDIA_QUERY,
|
|
@@ -17,7 +17,7 @@ var _postcss = require('../dictionary/postcss');
|
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
18
|
|
|
19
19
|
exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7, _browsers.IE_8], [_postcss.ATRULE], function (rule) {
|
|
20
|
-
|
|
20
|
+
const params = rule.params.trim();
|
|
21
21
|
if (params === '\\0screen\\,screen\\9') {
|
|
22
22
|
this.push(rule, {
|
|
23
23
|
identifier: _identifiers.MEDIA_QUERY,
|
|
@@ -17,7 +17,7 @@ var _postcss = require('../dictionary/postcss');
|
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
18
|
|
|
19
19
|
exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.ATRULE], function (rule) {
|
|
20
|
-
|
|
20
|
+
const params = rule.params.trim();
|
|
21
21
|
if (params === 'screen\\9') {
|
|
22
22
|
this.push(rule, {
|
|
23
23
|
identifier: _identifiers.MEDIA_QUERY,
|
package/dist/plugins/slash9.js
CHANGED
|
@@ -17,7 +17,7 @@ var _postcss = require('../dictionary/postcss');
|
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
18
|
|
|
19
19
|
exports.default = (0, _plugin2.default)([_browsers.IE_6, _browsers.IE_7, _browsers.IE_8], [_postcss.DECL], function (decl) {
|
|
20
|
-
|
|
20
|
+
let v = decl.value;
|
|
21
21
|
if (v && v.length > 2 && v.indexOf('\\9') === v.length - 2) {
|
|
22
22
|
this.push(decl, {
|
|
23
23
|
identifier: _identifiers.VALUE,
|
package/dist/plugins/starHtml.js
CHANGED
|
@@ -31,8 +31,8 @@ var _tags = require('../dictionary/tags');
|
|
|
31
31
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
32
32
|
|
|
33
33
|
function analyse(ctx, rule) {
|
|
34
|
-
return
|
|
35
|
-
selectors.each(
|
|
34
|
+
return selectors => {
|
|
35
|
+
selectors.each(selector => {
|
|
36
36
|
if ((0, _exists2.default)(selector, 0, '*') && (0, _exists2.default)(selector, 1, ' ') && (0, _exists2.default)(selector, 2, _tags.HTML) && (0, _exists2.default)(selector, 3, ' ') && selector.at(4)) {
|
|
37
37
|
ctx.push(rule, {
|
|
38
38
|
identifier: _identifiers.SELECTOR,
|
|
@@ -24,9 +24,8 @@ exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _brow
|
|
|
24
24
|
if ((0, _isMixin2.default)(rule)) {
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
var trim = selector.trim();
|
|
27
|
+
const { selector } = rule;
|
|
28
|
+
const trim = selector.trim();
|
|
30
29
|
if (trim.lastIndexOf(',') === selector.length - 1 || trim.lastIndexOf('\\') === selector.length - 1) {
|
|
31
30
|
this.push(rule, {
|
|
32
31
|
identifier: _identifiers.SELECTOR,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stylehacks",
|
|
3
|
-
"version": "4.0.0
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Detect/remove browser hacks from CSS files.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -23,24 +23,24 @@
|
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"babel-cli": "^6.0.0",
|
|
26
|
-
"cross-env": "^
|
|
26
|
+
"cross-env": "^5.0.0"
|
|
27
27
|
},
|
|
28
|
-
"homepage": "https://github.com/
|
|
28
|
+
"homepage": "https://github.com/cssnano/cssnano",
|
|
29
29
|
"author": {
|
|
30
30
|
"name": "Ben Briggs",
|
|
31
31
|
"email": "beneb.info@gmail.com",
|
|
32
32
|
"url": "http://beneb.info"
|
|
33
33
|
},
|
|
34
|
-
"repository": "
|
|
34
|
+
"repository": "cssnano/cssnano",
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"browserslist": "^
|
|
36
|
+
"browserslist": "^4.0.0",
|
|
37
37
|
"postcss": "^6.0.0",
|
|
38
|
-
"postcss-selector-parser": "^3.0.0
|
|
38
|
+
"postcss-selector-parser": "^3.0.0"
|
|
39
39
|
},
|
|
40
40
|
"bugs": {
|
|
41
|
-
"url": "https://github.com/
|
|
41
|
+
"url": "https://github.com/cssnano/cssnano/issues"
|
|
42
42
|
},
|
|
43
43
|
"engines": {
|
|
44
|
-
"node": ">=
|
|
44
|
+
"node": ">=6.9.0"
|
|
45
45
|
}
|
|
46
46
|
}
|