首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用node中的postcss修改css字符串

使用node中的postcss修改css字符串
EN

Stack Overflow用户
提问于 2018-04-28 00:21:16
回答 1查看 256关注 0票数 0

我有一个css的javascript字符串:

代码语言:javascript
复制
let style = '' +
  'body {display: flex;} ' +
  'body {background: red;}' +
  '#id5 {color: blue;}' +
  '$id7 {color: green;}' +
  '#id5 {color: yellow;}';

我正在尝试在我的项目中导入postcss,这样我就可以使用组合复制选择器:https://www.npmjs.com/package/postcss-combine-duplicated-selectors

代码语言:javascript
复制
const postcss = require('postcss-js');
const postcsscombine = require('postcss-combine-duplicated-selectors');

let combiner = postcss.sync([ postcsscombine ]);
let newStyle = combiner(style);

console.log(newStyle);

所需的输出将类似于:

代码语言:javascript
复制
'body {display: flex; background: red;} #id5 {color: yellow} #id7 {color: green;}'

实际产出

代码语言:javascript
复制
{ '0': 'b',
  '1': 'o',
  '2': 'd',
  '3': 'y',
  '4': ' ',
  '5': '{',
  '6': 'd',
  ...
  '100': 'l',
  '101': 'o',
  '102': 'w',
  '103': ';',
  '104': '}' }

它看起来像postcss处理传入的样式对象,而不是字符串。有没有办法解决这个问题,以获得所需的输出?

EN

回答 1

Stack Overflow用户

发布于 2018-08-02 06:43:47

如果您想使用PostCSS处理CSS字符串,只需执行以下操作:

代码语言:javascript
复制
const postcss = require('postcss');
const postcsscombine = require('postcss-combine-duplicated-selectors');

let style = 'body {display: flex;}, body {background: red;}, #id5 {color: blue;}, $id7 {color: green;}, #id5 {color: yellow;}';

postcss([postcsscombine])
  .process(style , {from: 'undefined'})
  .then(result => {
    console.log(result.css);
  });

需要将process options对象的from属性设置为“undefined”。另外,一些插件是异步的,所以最好使用promise接口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50066587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档