| const css = require('./'); |
| const fs = require('fs'); |
| |
| if (process.argv[process.argv.length - 1] !== __filename) { |
| let opts = { |
| filename: process.argv[process.argv.length - 1], |
| code: fs.readFileSync(process.argv[process.argv.length - 1]), |
| minify: true, |
| sourceMap: true, |
| targets: { |
| chrome: 95 << 16 |
| } |
| }; |
| |
| console.time('optimize'); |
| let r = css.transform(opts); |
| console.timeEnd('optimize') |
| // console.log(r.toString()); |
| console.log(r); |
| let code = r.code; |
| if (r.map) { |
| code = code.toString() + `\n/*# sourceMappingURL=out.css.map */\n`; |
| } |
| fs.writeFileSync('out.css', code); |
| if (r.map) { |
| fs.writeFileSync('out.css.map', r.map); |
| } |
| return; |
| } |
| |
| let res = css.transform({ |
| filename: __filename, |
| code: Buffer.from(` |
| @breakpoints { |
| .foo { color: yellow; } |
| } |
| |
| .foo { |
| color: red; |
| @bar { |
| width: 25px; |
| } |
| } |
| `), |
| drafts: { |
| nesting: true |
| }, |
| targets: { |
| safari: 16 << 16 |
| }, |
| customAtRules: { |
| breakpoints: { |
| // Syntax string defining the at rule prelude. |
| // https://drafts.css-houdini.org/css-properties-values-api/#syntax-strings |
| prelude: null, |
| // Type of the at rule block. |
| // Can be declaration-list, rule-list, or style-block. |
| // https://www.w3.org/TR/css-syntax-3/#declaration-rule-list |
| body: 'rule-list' |
| }, |
| bar: { |
| body: 'style-block' |
| } |
| }, |
| visitor: { |
| Rule: { |
| custom(rule) { |
| console.log(rule.body); |
| } |
| }, |
| Length(length) { |
| length.value *= 2; |
| return length; |
| } |
| } |
| }); |
| |
| console.log(res.code.toString()); |