From ab52a8c08221cda9d82ade63107f292b100f76ac Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Fri, 1 May 2020 08:25:45 -0400 Subject: [PATCH] Support `purge: false`, add more info to console warning --- __tests__/purgeUnusedStyles.test.js | 24 ++++++++++++++++++++++++ src/cli/emoji.js | 1 + src/lib/purgeUnusedStyles.js | 9 +++++++-- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/__tests__/purgeUnusedStyles.test.js b/__tests__/purgeUnusedStyles.test.js index 493e5fd8a..118f21725 100644 --- a/__tests__/purgeUnusedStyles.test.js +++ b/__tests__/purgeUnusedStyles.test.js @@ -173,6 +173,30 @@ test('does not purge if explicitly disabled', () => { }) }) +test('does not purge if purge is simply false', () => { + const OLD_NODE_ENV = process.env.NODE_ENV + process.env.NODE_ENV = 'production' + const inputPath = path.resolve(`${__dirname}/fixtures/tailwind-input.css`) + const input = fs.readFileSync(inputPath, 'utf8') + + return postcss([ + tailwind({ + ...defaultConfig, + purge: false, + }), + ]) + .process(input, { from: inputPath }) + .then(result => { + process.env.NODE_ENV = OLD_NODE_ENV + const expected = fs.readFileSync( + path.resolve(`${__dirname}/fixtures/tailwind-output.css`), + 'utf8' + ) + + expect(result.css).toBe(expected) + }) +}) + test('purges outside of production if explicitly enabled', () => { const OLD_NODE_ENV = process.env.NODE_ENV process.env.NODE_ENV = 'development' diff --git a/src/cli/emoji.js b/src/cli/emoji.js index 586557066..e5548b715 100644 --- a/src/cli/emoji.js +++ b/src/cli/emoji.js @@ -5,3 +5,4 @@ export const no = get('no_entry_sign') export const go = get('rocket') export const pack = get('package') export const disk = get('floppy_disk') +export const warning = get('warning') diff --git a/src/lib/purgeUnusedStyles.js b/src/lib/purgeUnusedStyles.js index 18683f87f..394b53ba8 100644 --- a/src/lib/purgeUnusedStyles.js +++ b/src/lib/purgeUnusedStyles.js @@ -1,6 +1,9 @@ import _ from 'lodash' import postcss from 'postcss' import purgecss from '@fullhuman/postcss-purgecss' +import chalk from 'chalk' +import { log } from '../cli/utils' +import * as emoji from '../cli/emoji' function removeTailwindComments(css) { css.walkComments(comment => { @@ -23,7 +26,7 @@ export default function purgeUnusedUtilities(config) { const purgeEnabled = _.get( config, 'purge.enabled', - config.purge !== undefined && process.env.NODE_ENV === 'production' + config.purge !== false && config.purge !== undefined && process.env.NODE_ENV === 'production' ) if (!purgeEnabled) { @@ -32,7 +35,9 @@ export default function purgeUnusedUtilities(config) { // Skip if `purge: []` since that's part of the default config if (Array.isArray(config.purge) && config.purge.length === 0) { - console.log('Skipping purge because no template paths provided...') + log() + log(emoji.warning, chalk.yellow(' Skipping purge because no template paths provided.')) + log(chalk.white(' To silence this warning, set `purge: false` in your Tailwind config file.')) return removeTailwindComments }