tailwindcss 3.0.22 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +92 -2
- package/colors.d.ts +3 -0
- package/defaultConfig.d.ts +3 -0
- package/defaultTheme.d.ts +3 -0
- package/lib/cli-peer-dependencies.js +10 -5
- package/lib/cli.js +266 -203
- package/lib/constants.js +8 -8
- package/lib/corePluginList.js +1 -0
- package/lib/corePlugins.js +1662 -1554
- package/lib/css/preflight.css +1 -8
- package/lib/featureFlags.js +14 -12
- package/lib/index.js +16 -6
- package/lib/lib/cacheInvalidation.js +87 -0
- package/lib/lib/collapseAdjacentRules.js +30 -15
- package/lib/lib/collapseDuplicateDeclarations.js +1 -1
- package/lib/lib/defaultExtractor.js +191 -30
- package/lib/lib/detectNesting.js +9 -9
- package/lib/lib/evaluateTailwindFunctions.js +37 -28
- package/lib/lib/expandApplyAtRules.js +379 -189
- package/lib/lib/expandTailwindAtRules.js +168 -144
- package/lib/lib/generateRules.js +190 -81
- package/lib/lib/getModuleDependencies.js +14 -14
- package/lib/lib/normalizeTailwindDirectives.js +35 -35
- package/lib/lib/partitionApplyAtRules.js +7 -7
- package/lib/lib/regex.js +52 -0
- package/lib/lib/resolveDefaultsAtRules.js +80 -79
- package/lib/lib/setupContextUtils.js +207 -170
- package/lib/lib/setupTrackingContext.js +61 -63
- package/lib/lib/sharedState.js +11 -8
- package/lib/lib/substituteScreenAtRules.js +3 -4
- package/lib/postcss-plugins/nesting/README.md +2 -2
- package/lib/postcss-plugins/nesting/index.js +1 -1
- package/lib/postcss-plugins/nesting/plugin.js +40 -9
- package/lib/processTailwindFeatures.js +7 -7
- package/lib/public/colors.js +241 -241
- package/lib/public/resolve-config.js +5 -5
- package/lib/util/buildMediaQuery.js +2 -3
- package/lib/util/cloneDeep.js +3 -5
- package/lib/util/cloneNodes.js +12 -1
- package/lib/util/color.js +42 -51
- package/lib/util/createPlugin.js +1 -2
- package/lib/util/createUtilityPlugin.js +6 -7
- package/lib/util/dataTypes.js +85 -81
- package/lib/util/escapeClassName.js +5 -5
- package/lib/util/escapeCommas.js +1 -1
- package/lib/util/flattenColorPalette.js +4 -7
- package/lib/util/formatVariantSelector.js +82 -75
- package/lib/util/getAllConfigs.js +15 -10
- package/lib/util/hashConfig.js +5 -5
- package/lib/util/isKeyframeRule.js +1 -1
- package/lib/util/isPlainObject.js +1 -1
- package/lib/util/isValidArbitraryValue.js +26 -27
- package/lib/util/log.js +9 -10
- package/lib/util/nameClass.js +7 -7
- package/lib/util/negateValue.js +4 -5
- package/lib/util/normalizeConfig.js +68 -58
- package/lib/util/normalizeScreens.js +5 -6
- package/lib/util/parseAnimationValue.js +56 -57
- package/lib/util/parseBoxShadowValue.js +19 -20
- package/lib/util/parseDependency.js +32 -32
- package/lib/util/parseObjectStyles.js +6 -6
- package/lib/util/pluginUtils.js +20 -12
- package/lib/util/prefixSelector.js +1 -1
- package/lib/util/resolveConfig.js +81 -58
- package/lib/util/resolveConfigPath.js +16 -16
- package/lib/util/responsive.js +6 -6
- package/lib/util/splitAtTopLevelOnly.js +90 -0
- package/lib/util/toColorValue.js +1 -1
- package/lib/util/toPath.js +2 -2
- package/lib/util/transformThemeValue.js +30 -28
- package/lib/util/validateConfig.js +21 -0
- package/lib/util/withAlphaVariable.js +23 -23
- package/package.json +33 -27
- package/peers/index.js +7728 -5848
- package/plugin.d.ts +11 -0
- package/scripts/generate-types.js +52 -0
- package/src/cli-peer-dependencies.js +7 -1
- package/src/cli.js +118 -24
- package/src/corePluginList.js +1 -1
- package/src/corePlugins.js +142 -30
- package/src/css/preflight.css +1 -8
- package/src/featureFlags.js +4 -4
- package/src/index.js +15 -1
- package/src/lib/cacheInvalidation.js +52 -0
- package/src/lib/collapseAdjacentRules.js +21 -2
- package/src/lib/defaultExtractor.js +177 -33
- package/src/lib/evaluateTailwindFunctions.js +20 -4
- package/src/lib/expandApplyAtRules.js +418 -186
- package/src/lib/expandTailwindAtRules.js +30 -10
- package/src/lib/generateRules.js +142 -51
- package/src/lib/regex.js +74 -0
- package/src/lib/resolveDefaultsAtRules.js +7 -3
- package/src/lib/setupContextUtils.js +142 -87
- package/src/lib/setupTrackingContext.js +7 -3
- package/src/lib/sharedState.js +2 -0
- package/src/postcss-plugins/nesting/README.md +2 -2
- package/src/postcss-plugins/nesting/plugin.js +36 -0
- package/src/util/cloneNodes.js +14 -1
- package/src/util/color.js +25 -21
- package/src/util/dataTypes.js +14 -6
- package/src/util/formatVariantSelector.js +79 -62
- package/src/util/getAllConfigs.js +7 -0
- package/src/util/log.js +8 -8
- package/src/util/normalizeConfig.js +0 -8
- package/src/util/parseBoxShadowValue.js +3 -2
- package/src/util/pluginUtils.js +13 -1
- package/src/util/resolveConfig.js +66 -22
- package/src/util/splitAtTopLevelOnly.js +71 -0
- package/src/util/toPath.js +1 -1
- package/src/util/transformThemeValue.js +4 -2
- package/src/util/validateConfig.js +13 -0
- package/src/util/withAlphaVariable.js +1 -1
- package/stubs/defaultConfig.stub.js +5 -1
- package/stubs/simpleConfig.stub.js +1 -0
- package/types/config.d.ts +325 -0
- package/types/generated/.gitkeep +0 -0
- package/types/generated/colors.d.ts +276 -0
- package/types/generated/corePluginList.d.ts +1 -0
- package/types/index.d.ts +1 -0
package/plugin.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Config, PluginCreator } from './types/config'
|
|
2
|
+
type Plugin = {
|
|
3
|
+
withOptions<T>(
|
|
4
|
+
plugin: (options: T) => PluginCreator,
|
|
5
|
+
config?: (options: T) => Config
|
|
6
|
+
): { (options: T): { handler: PluginCreator; config?: Config }; __isOptionsFunction: true }
|
|
7
|
+
(plugin: PluginCreator, config?: Config): { handler: PluginCreator; config?: Config }
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare const plugin: Plugin
|
|
11
|
+
export = plugin
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import prettier from 'prettier'
|
|
2
|
+
import { corePlugins } from '../src/corePlugins'
|
|
3
|
+
import colors from '../src/public/colors'
|
|
4
|
+
import fs from 'fs'
|
|
5
|
+
import path from 'path'
|
|
6
|
+
|
|
7
|
+
fs.writeFileSync(
|
|
8
|
+
path.join(process.cwd(), 'types', 'generated', 'corePluginList.d.ts'),
|
|
9
|
+
`export type CorePluginList = ${Object.keys(corePlugins)
|
|
10
|
+
.map((p) => `'${p}'`)
|
|
11
|
+
.join(' | ')}`
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
let colorsWithoutDeprecatedColors = Object.fromEntries(
|
|
15
|
+
Object.entries(Object.getOwnPropertyDescriptors(colors))
|
|
16
|
+
.filter(([_, { value }]) => {
|
|
17
|
+
return typeof value !== 'undefined'
|
|
18
|
+
})
|
|
19
|
+
.map(([name, definition]) => [name, definition.value])
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
let deprecatedColors = Object.entries(Object.getOwnPropertyDescriptors(colors))
|
|
23
|
+
.filter(([_, { value }]) => {
|
|
24
|
+
return typeof value === 'undefined'
|
|
25
|
+
})
|
|
26
|
+
.map(([name, definition]) => {
|
|
27
|
+
let warn = console.warn
|
|
28
|
+
let messages = []
|
|
29
|
+
console.warn = (...args) => messages.push(args.pop())
|
|
30
|
+
definition.get()
|
|
31
|
+
console.warn = warn
|
|
32
|
+
let message = messages.join(' ').trim()
|
|
33
|
+
let newColor = message.match(/renamed to `(.*)`/)[1]
|
|
34
|
+
return `/** @deprecated ${message} */${name}: DefaultColors['${newColor}'],`
|
|
35
|
+
})
|
|
36
|
+
.join('\n')
|
|
37
|
+
|
|
38
|
+
fs.writeFileSync(
|
|
39
|
+
path.join(process.cwd(), 'types', 'generated', 'colors.d.ts'),
|
|
40
|
+
prettier.format(
|
|
41
|
+
`export interface DefaultColors { ${JSON.stringify(colorsWithoutDeprecatedColors).slice(
|
|
42
|
+
1,
|
|
43
|
+
-1
|
|
44
|
+
)}\n${deprecatedColors}\n}`,
|
|
45
|
+
{
|
|
46
|
+
semi: false,
|
|
47
|
+
singleQuote: true,
|
|
48
|
+
printWidth: 100,
|
|
49
|
+
parser: 'typescript',
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
)
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
export
|
|
1
|
+
export function lazyPostcss() {
|
|
2
|
+
return require('postcss')
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export function lazyPostcssImport() {
|
|
6
|
+
return require('postcss-import')
|
|
7
|
+
}
|
|
2
8
|
|
|
3
9
|
export function lazyAutoprefixer() {
|
|
4
10
|
return require('autoprefixer')
|
package/src/cli.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { lazyPostcss, lazyPostcssImport, lazyCssnano, lazyAutoprefixer } from '../peers/index.js'
|
|
4
4
|
|
|
5
5
|
import chokidar from 'chokidar'
|
|
6
6
|
import path from 'path'
|
|
7
7
|
import arg from 'arg'
|
|
8
8
|
import fs from 'fs'
|
|
9
9
|
import postcssrc from 'postcss-load-config'
|
|
10
|
-
import {
|
|
10
|
+
import { lilconfig } from 'lilconfig'
|
|
11
11
|
import loadPlugins from 'postcss-load-config/src/plugins' // Little bit scary, looking at private/internal API
|
|
12
|
+
import loadOptions from 'postcss-load-config/src/options' // Little bit scary, looking at private/internal API
|
|
12
13
|
import tailwind from './processTailwindFeatures'
|
|
13
14
|
import resolveConfigInternal from '../resolveConfig'
|
|
14
15
|
import fastGlob from 'fast-glob'
|
|
@@ -16,11 +17,33 @@ import getModuleDependencies from './lib/getModuleDependencies'
|
|
|
16
17
|
import log from './util/log'
|
|
17
18
|
import packageJson from '../package.json'
|
|
18
19
|
import normalizePath from 'normalize-path'
|
|
20
|
+
import { validateConfig } from './util/validateConfig.js'
|
|
19
21
|
|
|
20
22
|
let env = {
|
|
21
23
|
DEBUG: process.env.DEBUG !== undefined && process.env.DEBUG !== '0',
|
|
22
24
|
}
|
|
23
25
|
|
|
26
|
+
function isESM() {
|
|
27
|
+
const pkgPath = path.resolve('./package.json')
|
|
28
|
+
|
|
29
|
+
try {
|
|
30
|
+
let pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'))
|
|
31
|
+
return pkg.type && pkg.type === 'module'
|
|
32
|
+
} catch (err) {
|
|
33
|
+
return false
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
let configs = isESM()
|
|
38
|
+
? {
|
|
39
|
+
tailwind: 'tailwind.config.cjs',
|
|
40
|
+
postcss: 'postcss.config.cjs',
|
|
41
|
+
}
|
|
42
|
+
: {
|
|
43
|
+
tailwind: 'tailwind.config.js',
|
|
44
|
+
postcss: 'postcss.config.js',
|
|
45
|
+
}
|
|
46
|
+
|
|
24
47
|
// ---
|
|
25
48
|
|
|
26
49
|
function indentRecursive(node, indent = 0) {
|
|
@@ -145,12 +168,21 @@ function oneOf(...options) {
|
|
|
145
168
|
)
|
|
146
169
|
}
|
|
147
170
|
|
|
171
|
+
function loadPostcss() {
|
|
172
|
+
// Try to load a local `postcss` version first
|
|
173
|
+
try {
|
|
174
|
+
return require('postcss')
|
|
175
|
+
} catch {}
|
|
176
|
+
|
|
177
|
+
return lazyPostcss()
|
|
178
|
+
}
|
|
179
|
+
|
|
148
180
|
let commands = {
|
|
149
181
|
init: {
|
|
150
182
|
run: init,
|
|
151
183
|
args: {
|
|
152
|
-
'--full': { type: Boolean, description:
|
|
153
|
-
'--postcss': { type: Boolean, description:
|
|
184
|
+
'--full': { type: Boolean, description: `Initialize a full \`${configs.tailwind}\` file` },
|
|
185
|
+
'--postcss': { type: Boolean, description: `Initialize a \`${configs.postcss}\` file` },
|
|
154
186
|
'-f': '--full',
|
|
155
187
|
'-p': '--postcss',
|
|
156
188
|
},
|
|
@@ -161,6 +193,10 @@ let commands = {
|
|
|
161
193
|
'--input': { type: String, description: 'Input file' },
|
|
162
194
|
'--output': { type: String, description: 'Output file' },
|
|
163
195
|
'--watch': { type: Boolean, description: 'Watch for changes and rebuild as needed' },
|
|
196
|
+
'--poll': {
|
|
197
|
+
type: Boolean,
|
|
198
|
+
description: 'Use polling instead of filesystem events when watching',
|
|
199
|
+
},
|
|
164
200
|
'--content': {
|
|
165
201
|
type: String,
|
|
166
202
|
description: 'Content paths to use for removing unused classes',
|
|
@@ -187,6 +223,7 @@ let commands = {
|
|
|
187
223
|
'-o': '--output',
|
|
188
224
|
'-m': '--minify',
|
|
189
225
|
'-w': '--watch',
|
|
226
|
+
'-p': '--poll',
|
|
190
227
|
},
|
|
191
228
|
},
|
|
192
229
|
}
|
|
@@ -320,7 +357,7 @@ run()
|
|
|
320
357
|
function init() {
|
|
321
358
|
let messages = []
|
|
322
359
|
|
|
323
|
-
let tailwindConfigLocation = path.resolve(args['_'][1] ??
|
|
360
|
+
let tailwindConfigLocation = path.resolve(args['_'][1] ?? `./${configs.tailwind}`)
|
|
324
361
|
if (fs.existsSync(tailwindConfigLocation)) {
|
|
325
362
|
messages.push(`${path.basename(tailwindConfigLocation)} already exists.`)
|
|
326
363
|
} else {
|
|
@@ -340,7 +377,7 @@ function init() {
|
|
|
340
377
|
}
|
|
341
378
|
|
|
342
379
|
if (args['--postcss']) {
|
|
343
|
-
let postcssConfigLocation = path.resolve(
|
|
380
|
+
let postcssConfigLocation = path.resolve(`./${configs.postcss}`)
|
|
344
381
|
if (fs.existsSync(postcssConfigLocation)) {
|
|
345
382
|
messages.push(`${path.basename(postcssConfigLocation)} already exists.`)
|
|
346
383
|
} else {
|
|
@@ -367,8 +404,14 @@ async function build() {
|
|
|
367
404
|
let input = args['--input']
|
|
368
405
|
let output = args['--output']
|
|
369
406
|
let shouldWatch = args['--watch']
|
|
407
|
+
let shouldPoll = args['--poll']
|
|
408
|
+
let shouldCoalesceWriteEvents = shouldPoll || process.platform === 'win32'
|
|
370
409
|
let includePostCss = args['--postcss']
|
|
371
410
|
|
|
411
|
+
// Polling interval in milliseconds
|
|
412
|
+
// Used only when polling or coalescing add/change events on Windows
|
|
413
|
+
let pollInterval = 10
|
|
414
|
+
|
|
372
415
|
// TODO: Deprecate this in future versions
|
|
373
416
|
if (!input && args['_'][1]) {
|
|
374
417
|
console.error('[deprecation] Running tailwindcss without -i, please provide an input file.')
|
|
@@ -388,17 +431,17 @@ async function build() {
|
|
|
388
431
|
let configPath = args['--config']
|
|
389
432
|
? args['--config']
|
|
390
433
|
: ((defaultPath) => (fs.existsSync(defaultPath) ? defaultPath : null))(
|
|
391
|
-
path.resolve(
|
|
434
|
+
path.resolve(`./${configs.tailwind}`)
|
|
392
435
|
)
|
|
393
436
|
|
|
394
437
|
async function loadPostCssPlugins() {
|
|
395
438
|
let customPostCssPath = typeof args['--postcss'] === 'string' ? args['--postcss'] : undefined
|
|
396
|
-
let
|
|
439
|
+
let config = customPostCssPath
|
|
397
440
|
? await (async () => {
|
|
398
441
|
let file = path.resolve(customPostCssPath)
|
|
399
442
|
|
|
400
|
-
// Implementation, see: https://unpkg.com/browse/postcss-load-config@3.0
|
|
401
|
-
let { config = {} } = await
|
|
443
|
+
// Implementation, see: https://unpkg.com/browse/postcss-load-config@3.1.0/src/index.js
|
|
444
|
+
let { config = {} } = await lilconfig('postcss').load(file)
|
|
402
445
|
if (typeof config === 'function') {
|
|
403
446
|
config = config()
|
|
404
447
|
} else {
|
|
@@ -409,10 +452,16 @@ async function build() {
|
|
|
409
452
|
config.plugins = []
|
|
410
453
|
}
|
|
411
454
|
|
|
412
|
-
return {
|
|
455
|
+
return {
|
|
456
|
+
file,
|
|
457
|
+
plugins: loadPlugins(config, file),
|
|
458
|
+
options: loadOptions(config, file),
|
|
459
|
+
}
|
|
413
460
|
})()
|
|
414
461
|
: await postcssrc()
|
|
415
462
|
|
|
463
|
+
let configPlugins = config.plugins
|
|
464
|
+
|
|
416
465
|
let configPluginTailwindIdx = configPlugins.findIndex((plugin) => {
|
|
417
466
|
if (typeof plugin === 'function' && plugin.name === 'tailwindcss') {
|
|
418
467
|
return true
|
|
@@ -432,7 +481,7 @@ async function build() {
|
|
|
432
481
|
? configPlugins
|
|
433
482
|
: configPlugins.slice(configPluginTailwindIdx + 1)
|
|
434
483
|
|
|
435
|
-
return [beforePlugins, afterPlugins]
|
|
484
|
+
return [beforePlugins, afterPlugins, config.options]
|
|
436
485
|
}
|
|
437
486
|
|
|
438
487
|
function resolveConfig() {
|
|
@@ -452,10 +501,13 @@ async function build() {
|
|
|
452
501
|
let files = args['--content'].split(/(?<!{[^}]+),/)
|
|
453
502
|
let resolvedConfig = resolveConfigInternal(config, { content: { files } })
|
|
454
503
|
resolvedConfig.content.files = files
|
|
504
|
+
resolvedConfig = validateConfig(resolvedConfig)
|
|
455
505
|
return resolvedConfig
|
|
456
506
|
}
|
|
457
507
|
|
|
458
|
-
|
|
508
|
+
let resolvedConfig = resolveConfigInternal(config)
|
|
509
|
+
resolvedConfig = validateConfig(resolvedConfig)
|
|
510
|
+
return resolvedConfig
|
|
459
511
|
}
|
|
460
512
|
|
|
461
513
|
function extractFileGlobs(config) {
|
|
@@ -516,7 +568,44 @@ async function build() {
|
|
|
516
568
|
|
|
517
569
|
tailwindPlugin.postcss = true
|
|
518
570
|
|
|
519
|
-
let
|
|
571
|
+
let IMPORT_COMMENT = '__TAILWIND_RESTORE_IMPORT__: '
|
|
572
|
+
|
|
573
|
+
let [beforePlugins, afterPlugins, postcssOptions] = includePostCss
|
|
574
|
+
? await loadPostCssPlugins()
|
|
575
|
+
: [
|
|
576
|
+
[
|
|
577
|
+
(root) => {
|
|
578
|
+
root.walkAtRules('import', (rule) => {
|
|
579
|
+
if (rule.params.slice(1).startsWith('tailwindcss/')) {
|
|
580
|
+
rule.after(postcss.comment({ text: IMPORT_COMMENT + rule.params }))
|
|
581
|
+
rule.remove()
|
|
582
|
+
}
|
|
583
|
+
})
|
|
584
|
+
},
|
|
585
|
+
(() => {
|
|
586
|
+
try {
|
|
587
|
+
return require('postcss-import')
|
|
588
|
+
} catch {}
|
|
589
|
+
|
|
590
|
+
return lazyPostcssImport()
|
|
591
|
+
})(),
|
|
592
|
+
(root) => {
|
|
593
|
+
root.walkComments((rule) => {
|
|
594
|
+
if (rule.text.startsWith(IMPORT_COMMENT)) {
|
|
595
|
+
rule.after(
|
|
596
|
+
postcss.atRule({
|
|
597
|
+
name: 'import',
|
|
598
|
+
params: rule.text.replace(IMPORT_COMMENT, ''),
|
|
599
|
+
})
|
|
600
|
+
)
|
|
601
|
+
rule.remove()
|
|
602
|
+
}
|
|
603
|
+
})
|
|
604
|
+
},
|
|
605
|
+
],
|
|
606
|
+
[],
|
|
607
|
+
{},
|
|
608
|
+
]
|
|
520
609
|
|
|
521
610
|
let plugins = [
|
|
522
611
|
...beforePlugins,
|
|
@@ -545,13 +634,14 @@ async function build() {
|
|
|
545
634
|
})(),
|
|
546
635
|
].filter(Boolean)
|
|
547
636
|
|
|
637
|
+
let postcss = loadPostcss()
|
|
548
638
|
let processor = postcss(plugins)
|
|
549
639
|
|
|
550
640
|
function processCSS(css) {
|
|
551
641
|
let start = process.hrtime.bigint()
|
|
552
642
|
return Promise.resolve()
|
|
553
643
|
.then(() => (output ? fs.promises.mkdir(path.dirname(output), { recursive: true }) : null))
|
|
554
|
-
.then(() => processor.process(css, { from: input, to: output }))
|
|
644
|
+
.then(() => processor.process(css, { ...postcssOptions, from: input, to: output }))
|
|
555
645
|
.then((result) => {
|
|
556
646
|
if (!output) {
|
|
557
647
|
return process.stdout.write(result.css)
|
|
@@ -678,6 +768,7 @@ async function build() {
|
|
|
678
768
|
let tailwindPluginIdx = plugins.indexOf('__TAILWIND_PLUGIN_POSITION__')
|
|
679
769
|
let copy = plugins.slice()
|
|
680
770
|
copy.splice(tailwindPluginIdx, 1, tailwindPlugin)
|
|
771
|
+
let postcss = loadPostcss()
|
|
681
772
|
let processor = postcss(copy)
|
|
682
773
|
|
|
683
774
|
function processCSS(css) {
|
|
@@ -746,14 +837,15 @@ async function build() {
|
|
|
746
837
|
}
|
|
747
838
|
|
|
748
839
|
watcher = chokidar.watch([...contextDependencies, ...extractFileGlobs(config)], {
|
|
840
|
+
usePolling: shouldPoll,
|
|
841
|
+
interval: shouldPoll ? pollInterval : undefined,
|
|
749
842
|
ignoreInitial: true,
|
|
750
|
-
awaitWriteFinish:
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
: false,
|
|
843
|
+
awaitWriteFinish: shouldCoalesceWriteEvents
|
|
844
|
+
? {
|
|
845
|
+
stabilityThreshold: 50,
|
|
846
|
+
pollInterval: pollInterval,
|
|
847
|
+
}
|
|
848
|
+
: false,
|
|
757
849
|
})
|
|
758
850
|
|
|
759
851
|
let chain = Promise.resolve()
|
|
@@ -806,8 +898,10 @@ async function build() {
|
|
|
806
898
|
|
|
807
899
|
if (shouldWatch) {
|
|
808
900
|
/* Abort the watcher if stdin is closed to avoid zombie processes */
|
|
809
|
-
process.stdin.
|
|
810
|
-
|
|
901
|
+
if (process.stdin.isTTY) {
|
|
902
|
+
process.stdin.on('end', () => process.exit(0))
|
|
903
|
+
process.stdin.resume()
|
|
904
|
+
}
|
|
811
905
|
startWatcher()
|
|
812
906
|
} else {
|
|
813
907
|
buildOnce()
|
package/src/corePluginList.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default ["preflight","container","accessibility","pointerEvents","visibility","position","inset","isolation","zIndex","order","gridColumn","gridColumnStart","gridColumnEnd","gridRow","gridRowStart","gridRowEnd","float","clear","margin","boxSizing","display","aspectRatio","height","maxHeight","minHeight","width","minWidth","maxWidth","flex","flexShrink","flexGrow","flexBasis","tableLayout","borderCollapse","transformOrigin","translate","rotate","skew","scale","transform","animation","cursor","touchAction","userSelect","resize","scrollSnapType","scrollSnapAlign","scrollSnapStop","scrollMargin","scrollPadding","listStylePosition","listStyleType","appearance","columns","breakBefore","breakInside","breakAfter","gridAutoColumns","gridAutoFlow","gridAutoRows","gridTemplateColumns","gridTemplateRows","flexDirection","flexWrap","placeContent","placeItems","alignContent","alignItems","justifyContent","justifyItems","gap","space","divideWidth","divideStyle","divideColor","divideOpacity","placeSelf","alignSelf","justifySelf","overflow","overscrollBehavior","scrollBehavior","textOverflow","whitespace","wordBreak","borderRadius","borderWidth","borderStyle","borderColor","borderOpacity","backgroundColor","backgroundOpacity","backgroundImage","gradientColorStops","boxDecorationBreak","backgroundSize","backgroundAttachment","backgroundClip","backgroundPosition","backgroundRepeat","backgroundOrigin","fill","stroke","strokeWidth","objectFit","objectPosition","padding","textAlign","textIndent","verticalAlign","fontFamily","fontSize","fontWeight","textTransform","fontStyle","fontVariantNumeric","lineHeight","letterSpacing","textColor","textOpacity","textDecoration","textDecorationColor","textDecorationStyle","textDecorationThickness","textUnderlineOffset","fontSmoothing","placeholderColor","placeholderOpacity","caretColor","accentColor","opacity","backgroundBlendMode","mixBlendMode","boxShadow","boxShadowColor","outlineStyle","outlineWidth","outlineOffset","outlineColor","ringWidth","ringColor","ringOpacity","ringOffsetWidth","ringOffsetColor","blur","brightness","contrast","dropShadow","grayscale","hueRotate","invert","saturate","sepia","filter","backdropBlur","backdropBrightness","backdropContrast","backdropGrayscale","backdropHueRotate","backdropInvert","backdropOpacity","backdropSaturate","backdropSepia","backdropFilter","transitionProperty","transitionDelay","transitionDuration","transitionTimingFunction","willChange","content"]
|
|
1
|
+
export default ["preflight","container","accessibility","pointerEvents","visibility","position","inset","isolation","zIndex","order","gridColumn","gridColumnStart","gridColumnEnd","gridRow","gridRowStart","gridRowEnd","float","clear","margin","boxSizing","display","aspectRatio","height","maxHeight","minHeight","width","minWidth","maxWidth","flex","flexShrink","flexGrow","flexBasis","tableLayout","borderCollapse","borderSpacing","transformOrigin","translate","rotate","skew","scale","transform","animation","cursor","touchAction","userSelect","resize","scrollSnapType","scrollSnapAlign","scrollSnapStop","scrollMargin","scrollPadding","listStylePosition","listStyleType","appearance","columns","breakBefore","breakInside","breakAfter","gridAutoColumns","gridAutoFlow","gridAutoRows","gridTemplateColumns","gridTemplateRows","flexDirection","flexWrap","placeContent","placeItems","alignContent","alignItems","justifyContent","justifyItems","gap","space","divideWidth","divideStyle","divideColor","divideOpacity","placeSelf","alignSelf","justifySelf","overflow","overscrollBehavior","scrollBehavior","textOverflow","whitespace","wordBreak","borderRadius","borderWidth","borderStyle","borderColor","borderOpacity","backgroundColor","backgroundOpacity","backgroundImage","gradientColorStops","boxDecorationBreak","backgroundSize","backgroundAttachment","backgroundClip","backgroundPosition","backgroundRepeat","backgroundOrigin","fill","stroke","strokeWidth","objectFit","objectPosition","padding","textAlign","textIndent","verticalAlign","fontFamily","fontSize","fontWeight","textTransform","fontStyle","fontVariantNumeric","lineHeight","letterSpacing","textColor","textOpacity","textDecoration","textDecorationColor","textDecorationStyle","textDecorationThickness","textUnderlineOffset","fontSmoothing","placeholderColor","placeholderOpacity","caretColor","accentColor","opacity","backgroundBlendMode","mixBlendMode","boxShadow","boxShadowColor","outlineStyle","outlineWidth","outlineOffset","outlineColor","ringWidth","ringColor","ringOpacity","ringOffsetWidth","ringOffsetColor","blur","brightness","contrast","dropShadow","grayscale","hueRotate","invert","saturate","sepia","filter","backdropBlur","backdropBrightness","backdropContrast","backdropGrayscale","backdropHueRotate","backdropInvert","backdropOpacity","backdropSaturate","backdropSepia","backdropFilter","transitionProperty","transitionDelay","transitionDuration","transitionTimingFunction","willChange","content"]
|