Skip to content

Commit d8df647

Browse files
committed
Add option to disable autoprefixer in CLI
1 parent 69b41b2 commit d8df647

2 files changed

Lines changed: 28 additions & 8 deletions

File tree

__tests__/cli.test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,17 @@ describe('cli', () => {
5656
expect(utils.writeFile.mock.calls[0][1]).toContain('.example')
5757
})
5858
})
59+
60+
it('compiles CSS file with autoprefixer', () => {
61+
cli(['build', inputCssPath]).then(() => {
62+
expect(process.stdout.write.mock.calls[0][0]).toContain('-ms-input-placeholder')
63+
})
64+
})
65+
66+
it('compiles CSS file without autoprefixer', () => {
67+
cli(['build', inputCssPath, '--no-autoprefixer']).then(() => {
68+
expect(process.stdout.write.mock.calls[0][0]).not.toContain('-ms-input-placeholder')
69+
})
70+
})
5971
})
6072
})

src/cli/commands/build.js

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,16 @@ export const options = [
2222
usage: '-c, --config <file>',
2323
description: 'Tailwind config file.',
2424
},
25+
{
26+
usage: '--no-autoprefixer',
27+
description: "Don't add vendor prefixes using autoprefixer.",
28+
},
2529
]
2630

2731
export const optionMap = {
2832
output: ['output', 'o'],
2933
config: ['config', 'c'],
34+
noAutoprefixer: ['no-autoprefixer'],
3035
}
3136

3237
/**
@@ -60,11 +65,11 @@ function stopWithHelp(...msgs) {
6065
* @param {string} outputFile
6166
* @return {Promise}
6267
*/
63-
function build(inputFile, configFile, outputFile) {
68+
function build(inputFile, configFile, outputFile, autoprefix) {
6469
const css = utils.readFile(inputFile)
6570

6671
return new Promise((resolve, reject) => {
67-
postcss([tailwind(configFile), autoprefixer])
72+
postcss([tailwind(configFile)].concat(autoprefix ? [autoprefixer] : []))
6873
.process(css, {
6974
from: inputFile,
7075
to: outputFile,
@@ -82,8 +87,10 @@ function build(inputFile, configFile, outputFile) {
8287
* @param {string} outputFile
8388
* @return {Promise}
8489
*/
85-
function buildToStdout(inputFile, configFile, outputFile) {
86-
return build(inputFile, configFile, outputFile).then(result => process.stdout.write(result.css))
90+
function buildToStdout(inputFile, configFile, outputFile, autoprefix) {
91+
return build(inputFile, configFile, outputFile, autoprefix).then(result =>
92+
process.stdout.write(result.css)
93+
)
8794
}
8895

8996
/**
@@ -95,12 +102,12 @@ function buildToStdout(inputFile, configFile, outputFile) {
95102
* @param {int[]} startTime
96103
* @return {Promise}
97104
*/
98-
function buildToFile(inputFile, configFile, outputFile, startTime) {
105+
function buildToFile(inputFile, configFile, outputFile, autoprefix, startTime) {
99106
utils.header()
100107
utils.log()
101108
utils.log(emoji.go, 'Building...', chalk.bold.cyan(inputFile))
102109

103-
return build(inputFile, configFile, outputFile).then(result => {
110+
return build(inputFile, configFile, outputFile, autoprefix).then(result => {
104111
utils.writeFile(outputFile, result.css)
105112

106113
const prettyTime = prettyHrtime(process.hrtime(startTime))
@@ -126,6 +133,7 @@ export function run(cliParams, cliOptions) {
126133
const inputFile = cliParams[0]
127134
const configFile = cliOptions.config && cliOptions.config[0]
128135
const outputFile = cliOptions.output && cliOptions.output[0]
136+
const autoprefix = !cliOptions.noAutoprefixer
129137

130138
!inputFile && stopWithHelp('CSS file is required.')
131139
!utils.exists(inputFile) && stop(chalk.bold.magenta(inputFile), 'does not exist.')
@@ -135,8 +143,8 @@ export function run(cliParams, cliOptions) {
135143
stop(chalk.bold.magenta(configFile), 'does not exist.')
136144

137145
const buildPromise = outputFile
138-
? buildToFile(inputFile, configFile, outputFile, startTime)
139-
: buildToStdout(inputFile, configFile, outputFile)
146+
? buildToFile(inputFile, configFile, outputFile, autoprefix, startTime)
147+
: buildToStdout(inputFile, configFile, outputFile, autoprefix)
140148

141149
buildPromise.then(resolve).catch(reject)
142150
})

0 commit comments

Comments
 (0)