Skip to content

Commit 6f1d5f0

Browse files
authored
prefer local plugins (tailwindlabs#4598)
* prefer local plugins over bundled plugins * hoist resolving of plugins * drop `options` when local `cssnano` is found
1 parent 976acb4 commit 6f1d5f0

File tree

1 file changed

+54
-15
lines changed

1 file changed

+54
-15
lines changed

src/cli.js

Lines changed: 54 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -448,8 +448,26 @@ async function build() {
448448
tailwindPlugin,
449449
!args['--minify'] && formatNodes,
450450
...afterPlugins,
451-
!args['--no-autoprefixer'] && lazyAutoprefixer(),
452-
args['--minify'] && lazyCssnano()({ preset: ['default', { cssDeclarationSorter: false }] }),
451+
!args['--no-autoprefixer'] &&
452+
(() => {
453+
// Try to load a local `autoprefixer` version first
454+
try {
455+
return require('autoprefixer')
456+
} catch {}
457+
458+
return lazyAutoprefixer()
459+
})(),
460+
args['--minify'] &&
461+
(() => {
462+
let options = { preset: ['default', { cssDeclarationSorter: false }] }
463+
464+
// Try to load a local `cssnano` version first
465+
try {
466+
return require('cssnano')
467+
} catch {}
468+
469+
return lazyCssnano()(options)
470+
})(),
453471
].filter(Boolean)
454472

455473
let processor = postcss(plugins)
@@ -485,7 +503,7 @@ async function build() {
485503

486504
let context = null
487505

488-
function startWatcher() {
506+
async function startWatcher() {
489507
let changedContent = []
490508
let configDependencies = []
491509
let contextDependencies = new Set()
@@ -509,6 +527,35 @@ async function build() {
509527
return resolveConfig()
510528
}
511529

530+
let [beforePlugins, afterPlugins] = includePostCss ? await loadPostCssPlugins() : [[], []]
531+
532+
let plugins = [
533+
...beforePlugins,
534+
'__TAILWIND_PLUGIN_POSITION__',
535+
!args['--minify'] && formatNodes,
536+
...afterPlugins,
537+
!args['--no-autoprefixer'] &&
538+
(() => {
539+
// Try to load a local `autoprefixer` version first
540+
try {
541+
return require('autoprefixer')
542+
} catch {}
543+
544+
return lazyAutoprefixer()
545+
})(),
546+
args['--minify'] &&
547+
(() => {
548+
let options = { preset: ['default', { cssDeclarationSorter: false }] }
549+
550+
// Try to load a local `cssnano` version first
551+
try {
552+
return require('cssnano')
553+
} catch {}
554+
555+
return lazyCssnano()(options)
556+
})(),
557+
].filter(Boolean)
558+
512559
async function rebuild(config) {
513560
env.DEBUG && console.time('Finished in')
514561

@@ -548,18 +595,10 @@ async function build() {
548595

549596
tailwindPlugin.postcss = true
550597

551-
let [beforePlugins, afterPlugins] = includePostCss ? await loadPostCssPlugins() : [[], []]
552-
553-
let plugins = [
554-
...beforePlugins,
555-
tailwindPlugin,
556-
!args['--minify'] && formatNodes,
557-
...afterPlugins,
558-
!args['--no-autoprefixer'] && lazyAutoprefixer(),
559-
args['--minify'] && lazyCssnano()({ preset: ['default', { cssDeclarationSorter: false }] }),
560-
].filter(Boolean)
561-
562-
let processor = postcss(plugins)
598+
let tailwindPluginIdx = plugins.indexOf('__TAILWIND_PLUGIN_POSITION__')
599+
let copy = plugins.slice()
600+
copy.splice(tailwindPluginIdx, 1, tailwindPlugin)
601+
let processor = postcss(copy)
563602

564603
function processCSS(css) {
565604
let start = process.hrtime.bigint()

0 commit comments

Comments
 (0)