postcss 7.0.3 → 7.0.7
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.
Potentially problematic release.
This version of postcss might be problematic. Click here for more details.
- package/CHANGELOG.md +12 -0
- package/README.md +55 -1
- package/docs/guidelines/plugin.md +8 -8
- package/lib/at-rule.js +3 -3
- package/lib/container.js +37 -37
- package/lib/css-syntax-error.js +45 -21
- package/lib/input.js +8 -5
- package/lib/lazy-result.js +13 -13
- package/lib/map-generator.js +1 -1
- package/lib/node.js +31 -31
- package/lib/parser.js +8 -10
- package/lib/postcss.d.ts +4 -0
- package/lib/previous-map.js +3 -3
- package/lib/processor.js +4 -4
- package/lib/result.js +8 -8
- package/lib/root.js +5 -5
- package/lib/stringifier.js +1 -1
- package/lib/warning.js +3 -3
- package/package.json +6 -1
- package/gulpfile.js +0 -83
package/CHANGELOG.md
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
# Change Log
|
2
2
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
3
3
|
|
4
|
+
## 7.0.7
|
5
|
+
* Extend `Error` in `CssSyntaxError`.
|
6
|
+
|
7
|
+
## 7.0.6
|
8
|
+
* Fix parsing files with BOM (by Veniamin Krol).
|
9
|
+
|
10
|
+
## 7.0.5
|
11
|
+
* Reduce npm package size (by Gilad Peleg).
|
12
|
+
|
13
|
+
## 7.0.4
|
14
|
+
* Fix safe parser regression.
|
15
|
+
|
4
16
|
## 7.0.3
|
5
17
|
* Fix tokenizer extendability (by Andrew Powell).
|
6
18
|
* Reduce npm package size.
|
package/README.md
CHANGED
@@ -26,10 +26,11 @@ e.g. to find errors automatically insert vendor prefixes.
|
|
26
26
|
**中文翻译**: [`README-cn.md`](./README-cn.md)
|
27
27
|
|
28
28
|
For PostCSS commercial support (consulting, improving the front-end culture
|
29
|
-
of your company, PostCSS plugins), contact [Evil
|
29
|
+
of your company, PostCSS plugins), contact [Evil Martians]
|
30
30
|
at <surrender@evilmartians.com>.
|
31
31
|
|
32
32
|
[Abstract Syntax Tree]: https://en.wikipedia.org/wiki/Abstract_syntax_tree
|
33
|
+
[Evil Martians]: https://evilmartians.com/?utm_source=postcss
|
33
34
|
[Autoprefixer]: https://github.com/postcss/autoprefixer
|
34
35
|
[plugins]: https://github.com/postcss/postcss#plugins
|
35
36
|
|
@@ -231,6 +232,41 @@ module.exports = {
|
|
231
232
|
|
232
233
|
[`postcss-loader`]: https://github.com/postcss/postcss-loader
|
233
234
|
|
235
|
+
### CSS-in-JS
|
236
|
+
|
237
|
+
The best way to use PostCSS with CSS-in-JS is [`astroturf`].
|
238
|
+
Add it’s loader to your `webpack.config.js`:
|
239
|
+
|
240
|
+
```js
|
241
|
+
module.exports = {
|
242
|
+
module: {
|
243
|
+
rules: [
|
244
|
+
{
|
245
|
+
test: /\.css$/,
|
246
|
+
use: ['style-loader', 'postcss-loader'],
|
247
|
+
},
|
248
|
+
{
|
249
|
+
test: /\.jsx?$/,
|
250
|
+
use: ['babel-loader', 'astroturf/loader'],
|
251
|
+
}
|
252
|
+
]
|
253
|
+
}
|
254
|
+
}
|
255
|
+
```
|
256
|
+
|
257
|
+
Then create `postcss.config.js`:
|
258
|
+
|
259
|
+
```js
|
260
|
+
module.exports = {
|
261
|
+
plugins: [
|
262
|
+
require('autoprefixer'),
|
263
|
+
require('postcss-nested')
|
264
|
+
]
|
265
|
+
}
|
266
|
+
```
|
267
|
+
|
268
|
+
[`astroturf`]: https://github.com/4Catalyzer/astroturf
|
269
|
+
|
234
270
|
### Gulp
|
235
271
|
|
236
272
|
Use [`gulp-postcss`] and [`gulp-sourcemaps`].
|
@@ -346,6 +382,24 @@ Common options:
|
|
346
382
|
[Midas]: https://github.com/ben-eb/midas
|
347
383
|
[SCSS]: https://github.com/postcss/postcss-scss
|
348
384
|
|
385
|
+
### Treat Warnings as Errors
|
386
|
+
|
387
|
+
In some situations it might be helpful to fail the build on any warning
|
388
|
+
from PostCSS or one of its plugins. This guarantees that no warnings
|
389
|
+
go unnoticed, and helps to avoid bugs. While there is no option to enable
|
390
|
+
treating warnings as errors, it can easily be done
|
391
|
+
by adding `postcss-fail-on-warn` plugin in the end of PostCSS plugins:
|
392
|
+
|
393
|
+
```js
|
394
|
+
module.exports = {
|
395
|
+
plugins: [
|
396
|
+
require('autoprefixer'),
|
397
|
+
require('postcss-fail-on-warn')
|
398
|
+
]
|
399
|
+
}
|
400
|
+
```
|
401
|
+
|
402
|
+
|
349
403
|
## Editors & IDE Integration
|
350
404
|
|
351
405
|
### Atom
|
@@ -22,34 +22,34 @@ The prefix `postcss-` shows that the plugin is part of the PostCSS ecosystem.
|
|
22
22
|
|
23
23
|
This rule is not mandatory for plugins that can run as independent tools,
|
24
24
|
without the user necessarily knowing that it is powered by
|
25
|
-
PostCSS — for example, [
|
25
|
+
PostCSS — for example, [RTLCSS] and [Autoprefixer].
|
26
26
|
|
27
27
|
[Autoprefixer]: https://github.com/postcss/autoprefixer
|
28
|
-
[
|
28
|
+
[RTLCSS]: https://rtlcss.com/
|
29
29
|
|
30
30
|
### 1.2. Do one thing, and do it well
|
31
31
|
|
32
32
|
Do not create multitool plugins. Several small, one-purpose plugins bundled into
|
33
33
|
a plugin pack is usually a better solution.
|
34
34
|
|
35
|
-
For example, [
|
36
|
-
one for each W3C specification. And [cssnano] contains a separate plugin
|
35
|
+
For example, [`postcss-preset-env`] contains many small plugins,
|
36
|
+
one for each W3C specification. And [`cssnano`] contains a separate plugin
|
37
37
|
for each of its optimization.
|
38
38
|
|
39
|
-
[
|
40
|
-
[cssnano]:
|
39
|
+
[`postcss-preset-env`]: https://preset-env.cssdb.org/
|
40
|
+
[`cssnano`]: https://github.com/ben-eb/cssnano
|
41
41
|
|
42
42
|
### 1.3. Do not use mixins
|
43
43
|
|
44
44
|
Preprocessors libraries like Compass provide an API with mixins.
|
45
45
|
|
46
46
|
PostCSS plugins are different.
|
47
|
-
A plugin cannot be just a set of mixins for [postcss-mixins].
|
47
|
+
A plugin cannot be just a set of mixins for [`postcss-mixins`].
|
48
48
|
|
49
49
|
To achieve your goal, consider transforming valid CSS
|
50
50
|
or using custom at-rules and custom properties.
|
51
51
|
|
52
|
-
[postcss-mixins]: https://github.com/postcss/postcss-mixins
|
52
|
+
[`postcss-mixins`]: https://github.com/postcss/postcss-mixins
|
53
53
|
|
54
54
|
### 1.4. Create plugin by `postcss.plugin`
|
55
55
|
|
package/lib/at-rule.js
CHANGED
@@ -64,7 +64,7 @@ function (_Container) {
|
|
64
64
|
}
|
65
65
|
|
66
66
|
return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children));
|
67
|
-
}
|
67
|
+
}
|
68
68
|
/**
|
69
69
|
* @memberof AtRule#
|
70
70
|
* @member {string} name The at-rule’s name immediately follows the `@`.
|
@@ -118,7 +118,7 @@ function (_Container) {
|
|
118
118
|
* // afterName: '\n',
|
119
119
|
* // after: '\n' }
|
120
120
|
*/
|
121
|
-
|
121
|
+
;
|
122
122
|
|
123
123
|
return AtRule;
|
124
124
|
}(_container.default);
|
@@ -126,4 +126,4 @@ function (_Container) {
|
|
126
126
|
var _default = AtRule;
|
127
127
|
exports.default = _default;
|
128
128
|
module.exports = exports.default;
|
129
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
129
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0LXJ1bGUuZXM2Il0sIm5hbWVzIjpbIkF0UnVsZSIsImRlZmF1bHRzIiwidHlwZSIsImFwcGVuZCIsIm5vZGVzIiwiY2hpbGRyZW4iLCJwcmVwZW5kIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBa0JNQSxNOzs7OztBQUNKLGtCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQ3JCLGtDQUFNQSxRQUFOO0FBQ0EsVUFBS0MsSUFBTCxHQUFZLFFBQVo7QUFGcUI7QUFHdEI7Ozs7U0FFREMsTSxHQUFBLGtCQUFxQjtBQUFBOztBQUNuQixRQUFJLENBQUMsS0FBS0MsS0FBVixFQUFpQixLQUFLQSxLQUFMLEdBQWEsRUFBYjs7QUFERSxzQ0FBVkMsUUFBVTtBQUFWQSxNQUFBQSxRQUFVO0FBQUE7O0FBRW5CLHlEQUFhRixNQUFiLGtEQUF1QkUsUUFBdkI7QUFDRCxHOztTQUVEQyxPLEdBQUEsbUJBQXNCO0FBQUE7O0FBQ3BCLFFBQUksQ0FBQyxLQUFLRixLQUFWLEVBQWlCLEtBQUtBLEtBQUwsR0FBYSxFQUFiOztBQURHLHVDQUFWQyxRQUFVO0FBQVZBLE1BQUFBLFFBQVU7QUFBQTs7QUFFcEIsMERBQWFDLE9BQWIsbURBQXdCRCxRQUF4QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7O0FBWUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF0Q21CRSxrQjs7ZUF1RU5QLE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJ1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYXQtcnVsZS5cbiAqXG4gKiBJZiBpdOKAmXMgZm9sbG93ZWQgaW4gdGhlIENTUyBieSBhIHt9IGJsb2NrLCB0aGlzIG5vZGUgd2lsbCBoYXZlXG4gKiBhIG5vZGVzIHByb3BlcnR5IHJlcHJlc2VudGluZyBpdHMgY2hpbGRyZW4uXG4gKlxuICogQGV4dGVuZHMgQ29udGFpbmVyXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdAY2hhcnNldCBcIlVURi04XCI7IEBtZWRpYSBwcmludCB7fScpXG4gKlxuICogY29uc3QgY2hhcnNldCA9IHJvb3QuZmlyc3RcbiAqIGNoYXJzZXQudHlwZSAgLy89PiAnYXRydWxlJ1xuICogY2hhcnNldC5ub2RlcyAvLz0+IHVuZGVmaW5lZFxuICpcbiAqIGNvbnN0IG1lZGlhID0gcm9vdC5sYXN0XG4gKiBtZWRpYS5ub2RlcyAgIC8vPT4gW11cbiAqL1xuY2xhc3MgQXRSdWxlIGV4dGVuZHMgQ29udGFpbmVyIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ2F0cnVsZSdcbiAgfVxuXG4gIGFwcGVuZCAoLi4uY2hpbGRyZW4pIHtcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICAgIHJldHVybiBzdXBlci5hcHBlbmQoLi4uY2hpbGRyZW4pXG4gIH1cblxuICBwcmVwZW5kICguLi5jaGlsZHJlbikge1xuICAgIGlmICghdGhpcy5ub2RlcykgdGhpcy5ub2RlcyA9IFtdXG4gICAgcmV0dXJuIHN1cGVyLnByZXBlbmQoLi4uY2hpbGRyZW4pXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIEF0UnVsZSNcbiAgICogQG1lbWJlciB7c3RyaW5nfSBuYW1lIFRoZSBhdC1ydWxl4oCZcyBuYW1lIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIGBAYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKCdAbWVkaWEgcHJpbnQge30nKVxuICAgKiBtZWRpYS5uYW1lIC8vPT4gJ21lZGlhJ1xuICAgKiBjb25zdCBtZWRpYSA9IHJvb3QuZmlyc3RcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gcGFyYW1zIFRoZSBhdC1ydWxl4oCZcyBwYXJhbWV0ZXJzLCB0aGUgdmFsdWVzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZm9sbG93IHRoZSBhdC1ydWxl4oCZcyBuYW1lIGJ1dCBwcmVjZWRlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFueSB7fSBibG9jay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKCdAbWVkaWEgcHJpbnQsIHNjcmVlbiB7fScpXG4gICAqIGNvbnN0IG1lZGlhID0gcm9vdC5maXJzdFxuICAgKiBtZWRpYS5wYXJhbXMgLy89PiAncHJpbnQsIHNjcmVlbidcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICpcbiAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICpcbiAgICogKiBgYmVmb3JlYDogdGhlIHNwYWNlIHN5bWJvbHMgYmVmb3JlIHRoZSBub2RlLiBJdCBhbHNvIHN0b3JlcyBgKmBcbiAgICogICBhbmQgYF9gIHN5bWJvbHMgYmVmb3JlIHRoZSBkZWNsYXJhdGlvbiAoSUUgaGFjaykuXG4gICAqICogYGFmdGVyYDogdGhlIHNwYWNlIHN5bWJvbHMgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIG5vZGVcbiAgICogICB0byB0aGUgZW5kIG9mIHRoZSBub2RlLlxuICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAqICAgZm9yIGRlY2xhcmF0aW9ucywgc2VsZWN0b3IgYW5kIGB7YCBmb3IgcnVsZXMsIG9yIGxhc3QgcGFyYW1ldGVyXG4gICAqICAgYW5kIGB7YCBmb3IgYXQtcnVsZXMuXG4gICAqICogYHNlbWljb2xvbmA6IGNvbnRhaW5zIHRydWUgaWYgdGhlIGxhc3QgY2hpbGQgaGFzXG4gICAqICAgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAqICogYGFmdGVyTmFtZWA6IHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBhdC1ydWxlIG5hbWUgYW5kIGl0cyBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBQb3N0Q1NTIGNsZWFucyBhdC1ydWxlIHBhcmFtZXRlcnMgZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLFxuICAgKiBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3MgcHJvcGVydGllcy5cbiAgICogQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJyAgQG1lZGlhXFxucHJpbnQge1xcbn0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJyAgJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBiZXR3ZWVuOiAnICcsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYWZ0ZXJOYW1lOiAnXFxuJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBhZnRlcjogJ1xcbicgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXRSdWxlXG4iXSwiZmlsZSI6ImF0LXJ1bGUuanMifQ==
|