You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

175 lines
3.9 KiB
Markdown

2 years ago
# px2rem
According to one stylesheet, generate rem version and @1x, @2x and @3x stylesheet.
[![NPM version][npm-image]][npm-url]
[![Build status][travis-image]][travis-url]
[![Test coverage][coveralls-image]][coveralls-url]
[![Downloads][downloads-image]][downloads-url]
[npm-image]: https://img.shields.io/npm/v/px2rem.svg?style=flat-square
[npm-url]: https://npmjs.org/package/px2rem
[travis-image]: https://img.shields.io/travis/songsiqi/px2rem.svg?style=flat-square
[travis-url]: https://travis-ci.org/songsiqi/px2rem
[coveralls-image]: https://img.shields.io/coveralls/songsiqi/px2rem.svg?style=flat-square
[coveralls-url]: https://coveralls.io/r/songsiqi/px2rem
[downloads-image]: http://img.shields.io/npm/dm/px2rem.svg?style=flat-square
[downloads-url]: https://npmjs.org/package/px2rem
This set of tools contains:
* a CLI tool
* [gulp plugin](https://www.npmjs.com/package/gulp-px3rem)
* [webpack loader](https://www.npmjs.com/package/px2rem-loader)
* [postcss plugin](https://www.npmjs.com/package/postcss-px2rem)
## Usage
The raw stylesheet only contains @2x style, and if you
* don't intend to transform the original value, eg: 1px border, add `/*no*/` after the declaration
* intend to use px by forceeg: font-size, add `/*px*/` after the declaration
**Attention: Dealing with SASS or LESS, only `/*...*/` comment can be used, in order to have the comments persisted**
### CLI tool
```
$ npm install -g px2rem
```
```
$ px2rem -o build src/*.css
```
```
Usage: px2rem [options] <file...>
Options:
-h, --help output usage information
-V, --version output the version number
-u, --remUnit [value] set `rem` unit value (default: 75)
-x, --threeVersion [value] whether to generate @1x, @2x and @3x version stylesheet (default: false)
-r, --remVersion [value] whether to generate rem version stylesheet (default: true)
-b, --baseDpr [value] set base device pixel ratio (default: 2)
-p, --remPrecision [value] set rem value precision (default: 6)
-o, --output [path] the output file dirname
```
### API
```
var Px2rem = require('px2rem');
var px2remIns = new Px2rem([config]);
var originCssText = '...';
var dpr = 2;
var newCssText = px2remIns.generateRem(originCssText); // generate rem version stylesheet
var newCssText = px2remIns.generateThree(originCssText, dpr); // generate @1x, @2x and @3x version stylesheet
```
### Example
#### Pre processing:
One raw stylesheet: `test.css`
```
.selector {
width: 150px;
height: 64px; /*px*/
font-size: 28px; /*px*/
border: 1px solid #ddd; /*no*/
}
```
#### After processing:
Rem version: `test.debug.css`
```
.selector {
width: 2rem;
border: 1px solid #ddd;
}
[data-dpr="1"] .selector {
height: 32px;
font-size: 14px;
}
[data-dpr="2"] .selector {
height: 64px;
font-size: 28px;
}
[data-dpr="3"] .selector {
height: 96px;
font-size: 42px;
}
```
@1x version: `test1x.debug.css`
```
.selector {
width: 75px;
height: 32px;
font-size: 14px;
border: 1px solid #ddd;
}
```
@2x version: `test2x.debug.css`
```
.selector {
width: 150px;
height: 64px;
font-size: 28px;
border: 1px solid #ddd;
}
```
@3x version: `test3x.debug.css`
```
.selector {
width: 225px;
height: 96px;
font-size: 42px;
border: 1px solid #ddd;
}
```
## Technical proposal
comment hook + css parser
## Change Log
### 0.5.0
* Support Animation keyframes (no `/*px*/` comment).
### 0.4.2
* The generated [data-dpr] rules follow the origin rule, no longer placed at the end of the whole style sheet.
* Optimize 0px, do not generate 3 [data-dpr] rules.
### 0.3.1
* Change default remUnit to 75.
* Delete comment config.
* Don't generate @1x, @2x and @3x version stylesheet by default.
### 0.2.2
* Support media query.
### 0.1.8
* Fix cli option duplication bug.
* Fix regular expression bug.
* Fix common comments bug which affects rem transformation.
## License
MIT