# fig-pxtorem **Repository Path**: shudong/fig-pxtorem ## Basic Information - **Project Name**: fig-pxtorem - **Description**: postcss-pxtorem-x - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-28 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Install ```shell $ yarn add fig-pxtorem -S ``` ## Usage * inclue files ## config include exclude - `inclue` (Array) inclue files, use: must absolute path ['/path/a','/path/b']. ``` const path = require('path'); const fs = require('fs'); const appDirectory = fs.realpathSync(process.cwd()); const resolveApp = relativePath => path.resolve(appDirectory, relativePath); module.exports = { plugins: [ require('postcss-flexbugs-fixes'), require('postcss-preset-env')({ autoprefixer: { flexbox: 'no-2009' }, stage: 3 }), require('fig-pxtorem')({ rootValue: 16, unitPrecision: 5, mediaQuery: false, minPixelValue: 0, include: [resolveApp('/src/pages/m'), resolveApp('/src/xxx/m')], propList: [ '*background*', '*padding*', '*margin*', 'letter-spacing', '*width', '*height', 'left', 'font*', 'right', 'top', 'bottom' ] }) // require('antd-mobile')({ // style: "css" // }) ] }; ``` ### Input/Output *With the default settings, only font related properties are targeted.* ```css // input h1 { margin: 0 0 20px; font-size: 32px; line-height: 1.2; letter-spacing: 1px; } // output h1 { margin: 0 0 20px; font-size: 2rem; line-height: 1.2; letter-spacing: 0.0625rem; } ``` ### Example ```js var fs = require('fs'); var postcss = require('postcss'); var pxtorem = require('postcss-pxtorem-x'); var css = fs.readFileSync('main.css', 'utf8'); var options = { replace: false }; var processedCss = postcss(pxtorem(options)).process(css).css; fs.writeFile('main-rem.css', processedCss, function (err) { if (err) { throw err; } console.log('Rem file written.'); }); ``` ### options Type: `Object | Null` Default: ```js { rootValue: 16, unitPrecision: 5, propList: ['font', 'font-size', 'line-height', 'letter-spacing'], selectorBlackList: [], replace: true, mediaQuery: false, minPixelValue: 0, exclude: ['/path/a','/path/b'], include: ['/path/a','/path/b'] } ``` - `rootValue` (Number) The root element font size. - `unitPrecision` (Number) The decimal numbers to allow the REM units to grow to. - `propList` (Array) The properties that can change from px to rem. - Values need to be exact matches. - Use wildcard `*` to enable all properties. Example: `['*']` - Use `*` at the start or end of a word. (`['*position*']` will match `background-position-y`) - Use `!` to not match a property. Example: `['*', '!letter-spacing']` - Combine the "not" prefix with the other prefixes. Example: `['*', '!font*']` - `selectorBlackList` (Array) The selectors to ignore and leave as px. - If value is string, it checks to see if selector contains the string. - `['body']` will match `.body-class` - If value is regexp, it checks to see if the selector matches the regexp. - `[/^body$/]` will match `body` but not `.body` - `replace` (Boolean) replaces rules containing rems instead of adding fallbacks. - `mediaQuery` (Boolean) Allow px to be converted in media queries. - `minPixelValue` (Number) Set the minimum pixel value to replace. - `inclue` (Array) inclue files, use: must absolute path ['/path/a','/path/b']. ### Use with gulp-postcss and autoprefixer ```js var gulp = require('gulp'); var postcss = require('gulp-postcss'); var autoprefixer = require('autoprefixer'); var pxtorem = require('postcss-pxtorem-x'); gulp.task('css', function () { var processors = [ autoprefixer({ browsers: 'last 1 version' }), pxtorem({ replace: false }) ]; return gulp.src(['build/css/**/*.css']) .pipe(postcss(processors)) .pipe(gulp.dest('build/css')); }); ``` ### A message about ignoring properties Currently, the easiest way to have a single property ignored is to use a capital in the pixel unit declaration. ```css // `px` is converted to `rem` .convert { font-size: 16px; // converted to 1rem } // `Px` or `PX` is ignored by `postcss-pxtorem-x` but still accepted by browsers .ignore { border: 1Px solid; // ignored border-width: 2PX; // ignored } ```