Liferay fork of CSS parser
npm install liferay-css-parseJavaScript CSS parser for nodejs and the browser.
$ npm install css-parse
```javascript
var parse = require('css-parse');
// CSS input string
var css = "body { \n background-color: #fff;\n }";
var output_obj = parse(css);
// Position and Filename parameters
var output_obj_pos = parse(css, { position: true, filename: 'file.css' });
// Print parsed object as CSS string
console.log(JSON.stringify(output_obj, null, 2));
``
options:
- filename - recommended for debuggingposition
- - true by default.
Errors will have err.position where position is:
- start - start line and column numbersend
- - end line and column numbersfilename
- - filename if passed to optionssource
- - source CSS string
If you create any errors in plugins such as in rework, you __must__ set the position as well for consistency.
css:
`css`
body {
background: #eee;
color: #888;
}
parse tree:
`json`
{
"type": "stylesheet",
"stylesheet": {
"rules": [
{
"type": "rule",
"selectors": [
"body"
],
"declarations": [
{
"type": "declaration",
"property": "background",
"value": "#eee"
},
{
"type": "declaration",
"property": "color",
"value": "#888"
}
]
}
]
}
}
parse tree with .position enabled:
`json`
{
"type": "stylesheet",
"stylesheet": {
"rules": [
{
"type": "rule",
"selectors": [
"body"
],
"declarations": [
{
"type": "declaration",
"property": "background",
"value": "#eee",
"position": {
"start": {
"line": 3,
"column": 3
},
"end": {
"line": 3,
"column": 19
}
}
},
{
"type": "declaration",
"property": "color",
"value": "#888",
"position": {
"start": {
"line": 4,
"column": 3
},
"end": {
"line": 4,
"column": 14
}
}
}
],
"position": {
"start": {
"line": 2,
"column": 1
},
"end": {
"line": 5,
"column": 2
}
}
}
]
}
}
If you also pass in filename: 'path/to/original.css', that will be setnode.position.filename`.
on
Parsed 15,000 lines of CSS (2mb) in 40ms on my macbook air.
MIT