Add option to disable autoprefixer in CLI

This commit is contained in:
Adam Wathan 2018-11-05 08:31:13 -05:00
parent 69b41b2daf
commit d8df647fa0
2 changed files with 28 additions and 8 deletions

View File

@ -56,5 +56,17 @@ describe('cli', () => {
expect(utils.writeFile.mock.calls[0][1]).toContain('.example')
})
})
it('compiles CSS file with autoprefixer', () => {
cli(['build', inputCssPath]).then(() => {
expect(process.stdout.write.mock.calls[0][0]).toContain('-ms-input-placeholder')
})
})
it('compiles CSS file without autoprefixer', () => {
cli(['build', inputCssPath, '--no-autoprefixer']).then(() => {
expect(process.stdout.write.mock.calls[0][0]).not.toContain('-ms-input-placeholder')
})
})
})
})

View File

@ -22,11 +22,16 @@ export const options = [
usage: '-c, --config <file>',
description: 'Tailwind config file.',
},
{
usage: '--no-autoprefixer',
description: "Don't add vendor prefixes using autoprefixer.",
},
]
export const optionMap = {
output: ['output', 'o'],
config: ['config', 'c'],
noAutoprefixer: ['no-autoprefixer'],
}
/**
@ -60,11 +65,11 @@ function stopWithHelp(...msgs) {
* @param {string} outputFile
* @return {Promise}
*/
function build(inputFile, configFile, outputFile) {
function build(inputFile, configFile, outputFile, autoprefix) {
const css = utils.readFile(inputFile)
return new Promise((resolve, reject) => {
postcss([tailwind(configFile), autoprefixer])
postcss([tailwind(configFile)].concat(autoprefix ? [autoprefixer] : []))
.process(css, {
from: inputFile,
to: outputFile,
@ -82,8 +87,10 @@ function build(inputFile, configFile, outputFile) {
* @param {string} outputFile
* @return {Promise}
*/
function buildToStdout(inputFile, configFile, outputFile) {
return build(inputFile, configFile, outputFile).then(result => process.stdout.write(result.css))
function buildToStdout(inputFile, configFile, outputFile, autoprefix) {
return build(inputFile, configFile, outputFile, autoprefix).then(result =>
process.stdout.write(result.css)
)
}
/**
@ -95,12 +102,12 @@ function buildToStdout(inputFile, configFile, outputFile) {
* @param {int[]} startTime
* @return {Promise}
*/
function buildToFile(inputFile, configFile, outputFile, startTime) {
function buildToFile(inputFile, configFile, outputFile, autoprefix, startTime) {
utils.header()
utils.log()
utils.log(emoji.go, 'Building...', chalk.bold.cyan(inputFile))
return build(inputFile, configFile, outputFile).then(result => {
return build(inputFile, configFile, outputFile, autoprefix).then(result => {
utils.writeFile(outputFile, result.css)
const prettyTime = prettyHrtime(process.hrtime(startTime))
@ -126,6 +133,7 @@ export function run(cliParams, cliOptions) {
const inputFile = cliParams[0]
const configFile = cliOptions.config && cliOptions.config[0]
const outputFile = cliOptions.output && cliOptions.output[0]
const autoprefix = !cliOptions.noAutoprefixer
!inputFile && stopWithHelp('CSS file is required.')
!utils.exists(inputFile) && stop(chalk.bold.magenta(inputFile), 'does not exist.')
@ -135,8 +143,8 @@ export function run(cliParams, cliOptions) {
stop(chalk.bold.magenta(configFile), 'does not exist.')
const buildPromise = outputFile
? buildToFile(inputFile, configFile, outputFile, startTime)
: buildToStdout(inputFile, configFile, outputFile)
? buildToFile(inputFile, configFile, outputFile, autoprefix, startTime)
: buildToStdout(inputFile, configFile, outputFile, autoprefix)
buildPromise.then(resolve).catch(reject)
})