tailwindcss 0.0.0-insiders.8f788e2 → 0.0.0-insiders.8f91c27
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/README.md +4 -5
- package/lib/cli/build/deps.js +62 -0
- package/lib/cli/build/index.js +12 -15
- package/lib/cli/build/plugin.js +109 -165
- package/lib/cli/build/utils.js +20 -20
- package/lib/cli/build/watching.js +10 -10
- package/lib/cli/help/index.js +11 -11
- package/lib/cli/index.js +58 -59
- package/lib/cli/init/index.js +16 -16
- package/lib/cli-peer-dependencies.js +36 -0
- package/lib/cli.js +1 -1
- package/lib/corePluginList.js +3 -1
- package/lib/corePlugins.js +2052 -1922
- package/lib/css/preflight.css +18 -14
- package/lib/featureFlags.js +17 -22
- package/lib/index.js +1 -1
- package/lib/lib/cacheInvalidation.js +4 -6
- package/lib/lib/collapseAdjacentRules.js +7 -9
- package/lib/lib/collapseDuplicateDeclarations.js +1 -1
- package/lib/lib/content.js +72 -32
- package/lib/lib/defaultExtractor.js +51 -17
- package/lib/lib/evaluateTailwindFunctions.js +22 -22
- package/lib/lib/expandApplyAtRules.js +32 -19
- package/lib/lib/expandTailwindAtRules.js +45 -79
- package/lib/lib/findAtConfigPath.js +5 -5
- package/lib/lib/generateRules.js +77 -62
- package/lib/lib/getModuleDependencies.js +23 -23
- package/lib/lib/load-config.js +25 -6
- package/lib/lib/normalizeTailwindDirectives.js +36 -21
- package/lib/lib/offsets.js +97 -48
- package/lib/lib/partitionApplyAtRules.js +2 -2
- package/lib/lib/regex.js +17 -17
- package/lib/lib/resolveDefaultsAtRules.js +42 -42
- package/lib/lib/setupContextUtils.js +163 -132
- package/lib/lib/setupTrackingContext.js +3 -3
- package/lib/lib/sharedState.js +22 -22
- package/lib/lib/substituteScreenAtRules.js +4 -4
- package/lib/plugin.js +8 -126
- package/lib/postcss-plugins/nesting/index.js +2 -2
- package/lib/postcss-plugins/nesting/plugin.js +10 -10
- package/lib/processTailwindFeatures.js +3 -5
- package/lib/public/colors.js +264 -264
- package/lib/util/applyImportantSelector.js +6 -4
- package/lib/util/buildMediaQuery.js +2 -2
- package/lib/util/cloneDeep.js +1 -1
- package/lib/util/cloneNodes.js +33 -13
- package/lib/util/color.js +22 -22
- package/lib/util/createUtilityPlugin.js +3 -3
- package/lib/util/dataTypes.js +201 -163
- package/lib/util/escapeCommas.js +1 -1
- package/lib/util/flattenColorPalette.js +2 -2
- package/lib/util/formatVariantSelector.js +21 -21
- package/lib/util/getAllConfigs.js +3 -3
- package/lib/util/isKeyframeRule.js +1 -1
- package/lib/util/isPlainObject.js +1 -1
- package/lib/util/isSyntacticallyValidPropertyValue.js +10 -10
- package/lib/util/log.js +9 -26
- package/lib/util/nameClass.js +4 -4
- package/lib/util/negateValue.js +8 -8
- package/lib/util/normalizeConfig.js +57 -86
- package/lib/util/normalizeScreens.js +22 -22
- package/lib/util/parseAnimationValue.js +39 -39
- package/lib/util/parseBoxShadowValue.js +21 -21
- package/lib/util/parseDependency.js +4 -4
- package/lib/util/parseGlob.js +4 -5
- package/lib/util/parseObjectStyles.js +1 -1
- package/lib/util/pluginUtils.js +47 -32
- package/lib/util/prefixSelector.js +4 -4
- package/lib/util/pseudoElements.js +72 -69
- package/lib/util/removeAlphaVariables.js +3 -1
- package/lib/util/resolveConfig.js +43 -50
- package/lib/util/resolveConfigPath.js +8 -6
- package/lib/util/responsive.js +1 -1
- package/lib/util/splitAtTopLevelOnly.js +3 -7
- package/lib/util/toColorValue.js +1 -1
- package/lib/util/toPath.js +2 -2
- package/lib/util/transformThemeValue.js +24 -24
- package/lib/util/validateConfig.js +9 -20
- package/lib/util/validateFormalSyntax.js +5 -5
- package/lib/util/withAlphaVariable.js +10 -10
- package/lib/value-parser/index.js +5 -5
- package/lib/value-parser/parse.js +43 -43
- package/lib/value-parser/stringify.js +11 -11
- package/lib/value-parser/unit.js +5 -5
- package/lib/value-parser/walk.js +1 -1
- package/package.json +49 -44
- package/peers/index.js +97871 -0
- package/scripts/release-notes.js +1 -1
- package/src/cli/build/deps.js +56 -0
- package/src/cli/build/index.js +0 -4
- package/src/cli/build/plugin.js +59 -84
- package/src/cli/index.js +0 -1
- package/src/cli-peer-dependencies.js +15 -0
- package/src/corePluginList.js +1 -1
- package/src/corePlugins.js +183 -56
- package/src/css/preflight.css +18 -14
- package/src/featureFlags.js +3 -5
- package/src/lib/content.js +88 -33
- package/src/lib/defaultExtractor.js +46 -6
- package/src/lib/expandApplyAtRules.js +17 -0
- package/src/lib/expandTailwindAtRules.js +10 -51
- package/src/lib/generateRules.js +25 -5
- package/src/lib/load-config.ts +24 -0
- package/src/lib/normalizeTailwindDirectives.js +27 -0
- package/src/lib/offsets.js +62 -3
- package/src/lib/resolveDefaultsAtRules.js +16 -14
- package/src/lib/setupContextUtils.js +47 -9
- package/src/plugin.js +0 -86
- package/src/processTailwindFeatures.js +0 -3
- package/src/util/applyImportantSelector.js +5 -6
- package/src/util/cloneNodes.js +35 -14
- package/src/util/dataTypes.js +57 -7
- package/src/util/formatVariantSelector.js +1 -1
- package/src/util/log.js +0 -24
- package/src/util/normalizeConfig.js +12 -41
- package/src/util/parseAnimationValue.js +1 -1
- package/src/util/parseGlob.js +1 -2
- package/src/util/pluginUtils.js +21 -1
- package/src/util/pseudoElements.js +4 -0
- package/src/util/removeAlphaVariables.js +2 -0
- package/src/util/resolveConfig.js +24 -42
- package/src/util/resolveConfigPath.js +2 -0
- package/src/util/splitAtTopLevelOnly.js +1 -5
- package/src/util/validateConfig.js +0 -10
- package/src/util/withAlphaVariable.js +2 -2
- package/stubs/config.full.js +2 -2
- package/stubs/config.simple.js +1 -1
- package/stubs/postcss.config.cjs +1 -0
- package/stubs/postcss.config.js +1 -0
- package/types/config.d.ts +14 -7
- package/types/generated/corePluginList.d.ts +1 -1
- package/index.css +0 -5
- package/lib/lib/detectNesting.js +0 -45
- package/lib/lib/handleImportAtRules.js +0 -50
- package/src/lib/detectNesting.js +0 -47
- package/src/lib/handleImportAtRules.js +0 -34
package/README.md
CHANGED
|
@@ -12,15 +12,14 @@
|
|
|
12
12
|
A utility-first CSS framework for rapidly building custom user interfaces.
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
|
-
|
|
16
15
|
<p align="center">
|
|
17
|
-
<a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=
|
|
16
|
+
<a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=main" alt="Build Status"></a>
|
|
18
17
|
<a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
|
|
19
18
|
<a href="https://github.com/tailwindcss/tailwindcss/releases"><img src="https://img.shields.io/npm/v/tailwindcss.svg" alt="Latest Release"></a>
|
|
20
|
-
<a href="https://github.com/tailwindcss/tailwindcss/blob/
|
|
19
|
+
<a href="https://github.com/tailwindcss/tailwindcss/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
|
|
21
20
|
</p>
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
---
|
|
24
23
|
|
|
25
24
|
## Documentation
|
|
26
25
|
|
|
@@ -38,4 +37,4 @@ For casual chit-chat with others using the framework:
|
|
|
38
37
|
|
|
39
38
|
## Contributing
|
|
40
39
|
|
|
41
|
-
If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/
|
|
40
|
+
If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
function _export(target, all) {
|
|
7
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: all[name]
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
_export(exports, {
|
|
13
|
+
loadPostcss: function() {
|
|
14
|
+
return loadPostcss;
|
|
15
|
+
},
|
|
16
|
+
loadPostcssImport: function() {
|
|
17
|
+
return loadPostcssImport;
|
|
18
|
+
},
|
|
19
|
+
loadCssNano: function() {
|
|
20
|
+
return loadCssNano;
|
|
21
|
+
},
|
|
22
|
+
loadAutoprefixer: function() {
|
|
23
|
+
return loadAutoprefixer;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
const _index = require("../../../peers/index.js");
|
|
27
|
+
function loadPostcss() {
|
|
28
|
+
// Try to load a local `postcss` version first
|
|
29
|
+
try {
|
|
30
|
+
return require("postcss");
|
|
31
|
+
} catch {}
|
|
32
|
+
return (0, _index.lazyPostcss)();
|
|
33
|
+
}
|
|
34
|
+
function loadPostcssImport() {
|
|
35
|
+
// Try to load a local `postcss-import` version first
|
|
36
|
+
try {
|
|
37
|
+
return require("postcss-import");
|
|
38
|
+
} catch {}
|
|
39
|
+
return (0, _index.lazyPostcssImport)();
|
|
40
|
+
}
|
|
41
|
+
function loadCssNano() {
|
|
42
|
+
let options = {
|
|
43
|
+
preset: [
|
|
44
|
+
"default",
|
|
45
|
+
{
|
|
46
|
+
cssDeclarationSorter: false
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
};
|
|
50
|
+
// Try to load a local `cssnano` version first
|
|
51
|
+
try {
|
|
52
|
+
return require("cssnano");
|
|
53
|
+
} catch {}
|
|
54
|
+
return (0, _index.lazyCssnano)()(options);
|
|
55
|
+
}
|
|
56
|
+
function loadAutoprefixer() {
|
|
57
|
+
// Try to load a local `autoprefixer` version first
|
|
58
|
+
try {
|
|
59
|
+
return require("autoprefixer");
|
|
60
|
+
} catch {}
|
|
61
|
+
return (0, _index.lazyAutoprefixer)();
|
|
62
|
+
}
|
package/lib/cli/build/index.js
CHANGED
|
@@ -19,32 +19,29 @@ function _interop_require_default(obj) {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
async function build(args) {
|
|
22
|
-
let input = args[
|
|
23
|
-
let shouldWatch = args[
|
|
22
|
+
let input = args["--input"];
|
|
23
|
+
let shouldWatch = args["--watch"];
|
|
24
24
|
// TODO: Deprecate this in future versions
|
|
25
|
-
if (!input && args[
|
|
26
|
-
console.error(
|
|
27
|
-
input = args[
|
|
25
|
+
if (!input && args["_"][1]) {
|
|
26
|
+
console.error("[deprecation] Running tailwindcss without -i, please provide an input file.");
|
|
27
|
+
input = args["--input"] = args["_"][1];
|
|
28
28
|
}
|
|
29
|
-
if (input && input !==
|
|
30
|
-
console.error(`Specified input file ${args[
|
|
29
|
+
if (input && input !== "-" && !_fs.default.existsSync(input = _path.default.resolve(input))) {
|
|
30
|
+
console.error(`Specified input file ${args["--input"]} does not exist.`);
|
|
31
31
|
process.exit(9);
|
|
32
32
|
}
|
|
33
|
-
if (args[
|
|
34
|
-
console.error(`Specified config file ${args[
|
|
33
|
+
if (args["--config"] && !_fs.default.existsSync(args["--config"] = _path.default.resolve(args["--config"]))) {
|
|
34
|
+
console.error(`Specified config file ${args["--config"]} does not exist.`);
|
|
35
35
|
process.exit(9);
|
|
36
36
|
}
|
|
37
|
-
if (args['--no-autoprefixer']) {
|
|
38
|
-
console.error('[deprecation] The --no-autoprefixer flag is deprecated and has no effect.');
|
|
39
|
-
}
|
|
40
37
|
// TODO: Reference the @config path here if exists
|
|
41
|
-
let configPath = args[
|
|
38
|
+
let configPath = args["--config"] ? args["--config"] : (0, _resolveConfigPath.resolveDefaultConfigPath)();
|
|
42
39
|
let processor = await (0, _plugin.createProcessor)(args, configPath);
|
|
43
40
|
if (shouldWatch) {
|
|
44
41
|
// Abort the watcher if stdin is closed to avoid zombie processes
|
|
45
42
|
// You can disable this behavior with --watch=always
|
|
46
|
-
if (args[
|
|
47
|
-
process.stdin.on(
|
|
43
|
+
if (args["--watch"] !== "always") {
|
|
44
|
+
process.stdin.on("end", ()=>process.exit(0));
|
|
48
45
|
}
|
|
49
46
|
process.stdin.resume();
|
|
50
47
|
await processor.watch();
|
package/lib/cli/build/plugin.js
CHANGED
|
@@ -9,19 +9,16 @@ Object.defineProperty(exports, "createProcessor", {
|
|
|
9
9
|
return createProcessor;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
const _packagejson = /*#__PURE__*/ _interop_require_default(require("../../../package.json"));
|
|
13
12
|
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
14
13
|
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
15
|
-
const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
|
|
16
14
|
const _postcssloadconfig = /*#__PURE__*/ _interop_require_default(require("postcss-load-config"));
|
|
17
|
-
const _browserslist = /*#__PURE__*/ _interop_require_default(require("browserslist"));
|
|
18
|
-
const _lightningcss = /*#__PURE__*/ _interop_require_wildcard(require("lightningcss"));
|
|
19
15
|
const _lilconfig = require("lilconfig");
|
|
20
16
|
const _plugins = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/plugins" // Little bit scary, looking at private/internal API
|
|
21
17
|
));
|
|
22
18
|
const _options = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/options" // Little bit scary, looking at private/internal API
|
|
23
19
|
));
|
|
24
20
|
const _processTailwindFeatures = /*#__PURE__*/ _interop_require_default(require("../../processTailwindFeatures"));
|
|
21
|
+
const _deps = require("./deps");
|
|
25
22
|
const _utils = require("./utils");
|
|
26
23
|
const _sharedState = require("../../lib/sharedState");
|
|
27
24
|
const _resolveConfig = /*#__PURE__*/ _interop_require_default(require("../../../resolveConfig.js"));
|
|
@@ -32,90 +29,11 @@ const _findAtConfigPath = require("../../lib/findAtConfigPath.js");
|
|
|
32
29
|
const _log = /*#__PURE__*/ _interop_require_default(require("../../util/log"));
|
|
33
30
|
const _loadconfig = require("../../lib/load-config");
|
|
34
31
|
const _getModuleDependencies = /*#__PURE__*/ _interop_require_default(require("../../lib/getModuleDependencies"));
|
|
35
|
-
const _validateConfig = require("../../util/validateConfig");
|
|
36
|
-
const _handleImportAtRules = require("../../lib/handleImportAtRules");
|
|
37
|
-
const _featureFlags = require("../../featureFlags");
|
|
38
32
|
function _interop_require_default(obj) {
|
|
39
33
|
return obj && obj.__esModule ? obj : {
|
|
40
34
|
default: obj
|
|
41
35
|
};
|
|
42
36
|
}
|
|
43
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
44
|
-
if (typeof WeakMap !== "function") return null;
|
|
45
|
-
var cacheBabelInterop = new WeakMap();
|
|
46
|
-
var cacheNodeInterop = new WeakMap();
|
|
47
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
48
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
49
|
-
})(nodeInterop);
|
|
50
|
-
}
|
|
51
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
52
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
53
|
-
return obj;
|
|
54
|
-
}
|
|
55
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
56
|
-
return {
|
|
57
|
-
default: obj
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
61
|
-
if (cache && cache.has(obj)) {
|
|
62
|
-
return cache.get(obj);
|
|
63
|
-
}
|
|
64
|
-
var newObj = {
|
|
65
|
-
__proto__: null
|
|
66
|
-
};
|
|
67
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
68
|
-
for(var key in obj){
|
|
69
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
70
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
71
|
-
if (desc && (desc.get || desc.set)) {
|
|
72
|
-
Object.defineProperty(newObj, key, desc);
|
|
73
|
-
} else {
|
|
74
|
-
newObj[key] = obj[key];
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
newObj.default = obj;
|
|
79
|
-
if (cache) {
|
|
80
|
-
cache.set(obj, newObj);
|
|
81
|
-
}
|
|
82
|
-
return newObj;
|
|
83
|
-
}
|
|
84
|
-
function license() {
|
|
85
|
-
return `/* ! tailwindcss v${_packagejson.default.version} | MIT License | https://tailwindcss.com */\n`;
|
|
86
|
-
}
|
|
87
|
-
async function lightningcss(result, { map = true, minify = true } = {}) {
|
|
88
|
-
try {
|
|
89
|
-
var _browserslist_findConfig;
|
|
90
|
-
var _result_opts_from;
|
|
91
|
-
let resolvedBrowsersListConfig = (_browserslist_findConfig = _browserslist.default.findConfig((_result_opts_from = result.opts.from) !== null && _result_opts_from !== void 0 ? _result_opts_from : process.cwd())) === null || _browserslist_findConfig === void 0 ? void 0 : _browserslist_findConfig.defaults;
|
|
92
|
-
let defaultBrowsersListConfig = _packagejson.default.browserslist;
|
|
93
|
-
let browsersListConfig = resolvedBrowsersListConfig !== null && resolvedBrowsersListConfig !== void 0 ? resolvedBrowsersListConfig : defaultBrowsersListConfig;
|
|
94
|
-
let transformed = _lightningcss.default.transform({
|
|
95
|
-
filename: result.opts.from || 'input.css',
|
|
96
|
-
code: Buffer.from(result.css, 'utf-8'),
|
|
97
|
-
minify,
|
|
98
|
-
sourceMap: result.map === undefined ? map : !!result.map,
|
|
99
|
-
inputSourceMap: result.map ? result.map.toString() : undefined,
|
|
100
|
-
targets: _lightningcss.default.browserslistToTargets((0, _browserslist.default)(browsersListConfig)),
|
|
101
|
-
include: _lightningcss.Features.Nesting,
|
|
102
|
-
exclude: _lightningcss.Features.LogicalProperties
|
|
103
|
-
});
|
|
104
|
-
return Object.assign(result, {
|
|
105
|
-
css: transformed.code.toString(),
|
|
106
|
-
map: result.map ? Object.assign(result.map, {
|
|
107
|
-
toString () {
|
|
108
|
-
var _transformed_map;
|
|
109
|
-
return (_transformed_map = transformed.map) === null || _transformed_map === void 0 ? void 0 : _transformed_map.toString();
|
|
110
|
-
}
|
|
111
|
-
}) : result.map
|
|
112
|
-
});
|
|
113
|
-
} catch (err) {
|
|
114
|
-
console.error('Unable to use Lightning CSS. Using raw version instead.');
|
|
115
|
-
console.error(err);
|
|
116
|
-
return result;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
37
|
/**
|
|
120
38
|
*
|
|
121
39
|
* @param {string} [customPostCssPath ]
|
|
@@ -125,8 +43,8 @@ async function lightningcss(result, { map = true, minify = true } = {}) {
|
|
|
125
43
|
let file = _path.default.resolve(customPostCssPath);
|
|
126
44
|
// Implementation, see: https://unpkg.com/browse/postcss-load-config@3.1.0/src/index.js
|
|
127
45
|
// @ts-ignore
|
|
128
|
-
let { config =
|
|
129
|
-
if (typeof config ===
|
|
46
|
+
let { config ={} } = await (0, _lilconfig.lilconfig)("postcss").load(file);
|
|
47
|
+
if (typeof config === "function") {
|
|
130
48
|
config = config();
|
|
131
49
|
} else {
|
|
132
50
|
config = Object.assign({}, config);
|
|
@@ -142,10 +60,10 @@ async function lightningcss(result, { map = true, minify = true } = {}) {
|
|
|
142
60
|
})() : await (0, _postcssloadconfig.default)();
|
|
143
61
|
let configPlugins = config.plugins;
|
|
144
62
|
let configPluginTailwindIdx = configPlugins.findIndex((plugin)=>{
|
|
145
|
-
if (typeof plugin ===
|
|
63
|
+
if (typeof plugin === "function" && plugin.name === "tailwindcss") {
|
|
146
64
|
return true;
|
|
147
65
|
}
|
|
148
|
-
if (typeof plugin ===
|
|
66
|
+
if (typeof plugin === "object" && plugin !== null && plugin.postcssPlugin === "tailwindcss") {
|
|
149
67
|
return true;
|
|
150
68
|
}
|
|
151
69
|
return false;
|
|
@@ -158,11 +76,43 @@ async function lightningcss(result, { map = true, minify = true } = {}) {
|
|
|
158
76
|
config.options
|
|
159
77
|
];
|
|
160
78
|
}
|
|
79
|
+
function loadBuiltinPostcssPlugins() {
|
|
80
|
+
let postcss = (0, _deps.loadPostcss)();
|
|
81
|
+
let IMPORT_COMMENT = "__TAILWIND_RESTORE_IMPORT__: ";
|
|
82
|
+
return [
|
|
83
|
+
[
|
|
84
|
+
(root)=>{
|
|
85
|
+
root.walkAtRules("import", (rule)=>{
|
|
86
|
+
if (rule.params.slice(1).startsWith("tailwindcss/")) {
|
|
87
|
+
rule.after(postcss.comment({
|
|
88
|
+
text: IMPORT_COMMENT + rule.params
|
|
89
|
+
}));
|
|
90
|
+
rule.remove();
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
(0, _deps.loadPostcssImport)(),
|
|
95
|
+
(root)=>{
|
|
96
|
+
root.walkComments((rule)=>{
|
|
97
|
+
if (rule.text.startsWith(IMPORT_COMMENT)) {
|
|
98
|
+
rule.after(postcss.atRule({
|
|
99
|
+
name: "import",
|
|
100
|
+
params: rule.text.replace(IMPORT_COMMENT, "")
|
|
101
|
+
}));
|
|
102
|
+
rule.remove();
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
[],
|
|
108
|
+
{}
|
|
109
|
+
];
|
|
110
|
+
}
|
|
161
111
|
let state = {
|
|
162
112
|
/** @type {any} */ context: null,
|
|
163
113
|
/** @type {ReturnType<typeof createWatcher> | null} */ watcher: null,
|
|
164
114
|
/** @type {{content: string, extension: string}[]} */ changedContent: [],
|
|
165
|
-
/** @type {
|
|
115
|
+
/** @type {ReturnType<typeof load> | null} */ configBag: null,
|
|
166
116
|
contextDependencies: new Set(),
|
|
167
117
|
/** @type {import('../../lib/content.js').ContentPath[]} */ contentPaths: [],
|
|
168
118
|
refreshContentPaths () {
|
|
@@ -193,7 +143,12 @@ let state = {
|
|
|
193
143
|
}
|
|
194
144
|
}
|
|
195
145
|
};
|
|
196
|
-
|
|
146
|
+
// @ts-ignore
|
|
147
|
+
this.configBag.config = (0, _resolveConfig.default)(this.configBag.config, {
|
|
148
|
+
content: {
|
|
149
|
+
files: []
|
|
150
|
+
}
|
|
151
|
+
});
|
|
197
152
|
// Override content files if `--content` has been passed explicitly
|
|
198
153
|
if ((content === null || content === void 0 ? void 0 : content.length) > 0) {
|
|
199
154
|
this.configBag.config.content.files = content;
|
|
@@ -202,33 +157,28 @@ let state = {
|
|
|
202
157
|
},
|
|
203
158
|
refreshConfigDependencies () {
|
|
204
159
|
var _this_configBag;
|
|
205
|
-
_sharedState.env.DEBUG && console.time(
|
|
160
|
+
_sharedState.env.DEBUG && console.time("Module dependencies");
|
|
206
161
|
(_this_configBag = this.configBag) === null || _this_configBag === void 0 ? void 0 : _this_configBag.dispose();
|
|
207
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
162
|
+
_sharedState.env.DEBUG && console.timeEnd("Module dependencies");
|
|
208
163
|
},
|
|
209
164
|
readContentPaths () {
|
|
210
165
|
let content = [];
|
|
211
166
|
// Resolve globs from the content config
|
|
212
167
|
// TODO: When we make the postcss plugin async-capable this can become async
|
|
213
168
|
let files = _fastglob.default.sync(this.contentPatterns.all);
|
|
169
|
+
let checkBroadPattern = (0, _content.createBroadPatternCheck)(this.contentPatterns.all);
|
|
214
170
|
for (let file of files){
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
} else {
|
|
221
|
-
content.push({
|
|
222
|
-
content: _fs.default.readFileSync(_path.default.resolve(file), 'utf8'),
|
|
223
|
-
extension: _path.default.extname(file).slice(1)
|
|
224
|
-
});
|
|
225
|
-
}
|
|
171
|
+
checkBroadPattern(file);
|
|
172
|
+
content.push({
|
|
173
|
+
content: _fs.default.readFileSync(_path.default.resolve(file), "utf8"),
|
|
174
|
+
extension: _path.default.extname(file).slice(1)
|
|
175
|
+
});
|
|
226
176
|
}
|
|
227
177
|
// Resolve raw content in the tailwind config
|
|
228
178
|
let rawContent = this.config.content.files.filter((file)=>{
|
|
229
|
-
return file !== null && typeof file ===
|
|
179
|
+
return file !== null && typeof file === "object";
|
|
230
180
|
});
|
|
231
|
-
for (let { raw: htmlContent, extension =
|
|
181
|
+
for (let { raw: htmlContent , extension ="html" } of rawContent){
|
|
232
182
|
content.push({
|
|
233
183
|
content: htmlContent,
|
|
234
184
|
extension
|
|
@@ -236,31 +186,31 @@ let state = {
|
|
|
236
186
|
}
|
|
237
187
|
return content;
|
|
238
188
|
},
|
|
239
|
-
getContext ({ createContext, cliConfigPath, root, result, content
|
|
189
|
+
getContext ({ createContext , cliConfigPath , root , result , content }) {
|
|
190
|
+
_sharedState.env.DEBUG && console.time("Searching for config");
|
|
191
|
+
var _findAtConfigPath1;
|
|
192
|
+
let configPath = (_findAtConfigPath1 = (0, _findAtConfigPath.findAtConfigPath)(root, result)) !== null && _findAtConfigPath1 !== void 0 ? _findAtConfigPath1 : cliConfigPath;
|
|
193
|
+
_sharedState.env.DEBUG && console.timeEnd("Searching for config");
|
|
240
194
|
if (this.context) {
|
|
241
195
|
this.context.changedContent = this.changedContent.splice(0);
|
|
242
196
|
return this.context;
|
|
243
197
|
}
|
|
244
|
-
_sharedState.env.DEBUG && console.time(
|
|
245
|
-
var _findAtConfigPath1;
|
|
246
|
-
let configPath = (_findAtConfigPath1 = (0, _findAtConfigPath.findAtConfigPath)(root, result)) !== null && _findAtConfigPath1 !== void 0 ? _findAtConfigPath1 : cliConfigPath;
|
|
247
|
-
_sharedState.env.DEBUG && console.timeEnd('Searching for config');
|
|
248
|
-
_sharedState.env.DEBUG && console.time('Loading config');
|
|
198
|
+
_sharedState.env.DEBUG && console.time("Loading config");
|
|
249
199
|
let config = this.loadConfig(configPath, content);
|
|
250
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
251
|
-
_sharedState.env.DEBUG && console.time(
|
|
200
|
+
_sharedState.env.DEBUG && console.timeEnd("Loading config");
|
|
201
|
+
_sharedState.env.DEBUG && console.time("Creating context");
|
|
252
202
|
this.context = createContext(config, []);
|
|
253
203
|
Object.assign(this.context, {
|
|
254
204
|
userConfigPath: configPath
|
|
255
205
|
});
|
|
256
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
257
|
-
_sharedState.env.DEBUG && console.time(
|
|
206
|
+
_sharedState.env.DEBUG && console.timeEnd("Creating context");
|
|
207
|
+
_sharedState.env.DEBUG && console.time("Resolving content paths");
|
|
258
208
|
this.refreshContentPaths();
|
|
259
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
209
|
+
_sharedState.env.DEBUG && console.timeEnd("Resolving content paths");
|
|
260
210
|
if (this.watcher) {
|
|
261
|
-
_sharedState.env.DEBUG && console.time(
|
|
211
|
+
_sharedState.env.DEBUG && console.time("Watch new files");
|
|
262
212
|
this.watcher.refreshWatchedFiles();
|
|
263
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
213
|
+
_sharedState.env.DEBUG && console.timeEnd("Watch new files");
|
|
264
214
|
}
|
|
265
215
|
for (let file of this.readContentPaths()){
|
|
266
216
|
this.context.changedContent.push(file);
|
|
@@ -270,35 +220,31 @@ let state = {
|
|
|
270
220
|
};
|
|
271
221
|
async function createProcessor(args, cliConfigPath) {
|
|
272
222
|
var _args_content;
|
|
273
|
-
let
|
|
274
|
-
let
|
|
275
|
-
let
|
|
276
|
-
let
|
|
277
|
-
let
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
if (args['--purge']) {
|
|
284
|
-
_log.default.warn('purge-flag-deprecated', [
|
|
285
|
-
'The `--purge` flag has been deprecated.',
|
|
286
|
-
'Please use `--content` instead.'
|
|
223
|
+
let postcss = (0, _deps.loadPostcss)();
|
|
224
|
+
let input = args["--input"];
|
|
225
|
+
let output = args["--output"];
|
|
226
|
+
let includePostCss = args["--postcss"];
|
|
227
|
+
let customPostCssPath = typeof args["--postcss"] === "string" ? args["--postcss"] : undefined;
|
|
228
|
+
let [beforePlugins, afterPlugins, postcssOptions] = includePostCss ? await loadPostCssPlugins(customPostCssPath) : loadBuiltinPostcssPlugins();
|
|
229
|
+
if (args["--purge"]) {
|
|
230
|
+
_log.default.warn("purge-flag-deprecated", [
|
|
231
|
+
"The `--purge` flag has been deprecated.",
|
|
232
|
+
"Please use `--content` instead."
|
|
287
233
|
]);
|
|
288
|
-
if (!args[
|
|
289
|
-
args[
|
|
234
|
+
if (!args["--content"]) {
|
|
235
|
+
args["--content"] = args["--purge"];
|
|
290
236
|
}
|
|
291
237
|
}
|
|
292
238
|
var _args_content_split;
|
|
293
|
-
let content = (_args_content_split = (_args_content = args[
|
|
239
|
+
let content = (_args_content_split = (_args_content = args["--content"]) === null || _args_content === void 0 ? void 0 : _args_content.split(/(?<!{[^}]+),/)) !== null && _args_content_split !== void 0 ? _args_content_split : [];
|
|
294
240
|
let tailwindPlugin = ()=>{
|
|
295
241
|
return {
|
|
296
|
-
postcssPlugin:
|
|
297
|
-
async Once (root, { result
|
|
298
|
-
_sharedState.env.DEBUG && console.time(
|
|
299
|
-
await (0, _processTailwindFeatures.default)(({ createContext
|
|
242
|
+
postcssPlugin: "tailwindcss",
|
|
243
|
+
async Once (root, { result }) {
|
|
244
|
+
_sharedState.env.DEBUG && console.time("Compiling CSS");
|
|
245
|
+
await (0, _processTailwindFeatures.default)(({ createContext })=>{
|
|
300
246
|
console.error();
|
|
301
|
-
console.error(
|
|
247
|
+
console.error("Rebuilding...");
|
|
302
248
|
return ()=>{
|
|
303
249
|
return state.getContext({
|
|
304
250
|
createContext,
|
|
@@ -309,7 +255,7 @@ async function createProcessor(args, cliConfigPath) {
|
|
|
309
255
|
});
|
|
310
256
|
};
|
|
311
257
|
})(root, result);
|
|
312
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
258
|
+
_sharedState.env.DEBUG && console.timeEnd("Compiling CSS");
|
|
313
259
|
}
|
|
314
260
|
};
|
|
315
261
|
};
|
|
@@ -317,62 +263,60 @@ async function createProcessor(args, cliConfigPath) {
|
|
|
317
263
|
let plugins = [
|
|
318
264
|
...beforePlugins,
|
|
319
265
|
tailwindPlugin,
|
|
320
|
-
!args[
|
|
321
|
-
...afterPlugins
|
|
266
|
+
!args["--minify"] && _utils.formatNodes,
|
|
267
|
+
...afterPlugins,
|
|
268
|
+
!args["--no-autoprefixer"] && (0, _deps.loadAutoprefixer)(),
|
|
269
|
+
args["--minify"] && (0, _deps.loadCssNano)()
|
|
322
270
|
].filter(Boolean);
|
|
323
271
|
/** @type {import('postcss').Processor} */ // @ts-ignore
|
|
324
|
-
let processor = (
|
|
272
|
+
let processor = postcss(plugins);
|
|
325
273
|
async function readInput() {
|
|
326
274
|
// Piping in data, let's drain the stdin
|
|
327
|
-
if (input ===
|
|
275
|
+
if (input === "-") {
|
|
328
276
|
return (0, _utils.drainStdin)();
|
|
329
277
|
}
|
|
330
278
|
// Input file has been provided
|
|
331
279
|
if (input) {
|
|
332
|
-
return _fs.default.promises.readFile(_path.default.resolve(input),
|
|
280
|
+
return _fs.default.promises.readFile(_path.default.resolve(input), "utf8");
|
|
333
281
|
}
|
|
334
|
-
// No input file provided, fallback to default
|
|
335
|
-
return
|
|
282
|
+
// No input file provided, fallback to default at-rules
|
|
283
|
+
return "@tailwind base; @tailwind components; @tailwind utilities";
|
|
336
284
|
}
|
|
337
285
|
async function build() {
|
|
338
286
|
let start = process.hrtime.bigint();
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
};
|
|
344
|
-
return readInput().then((css)=>processor.process(css, options)).then((result)=>lightningcss(result, {
|
|
345
|
-
...options,
|
|
346
|
-
minify: !!args['--minify']
|
|
287
|
+
return readInput().then((css)=>processor.process(css, {
|
|
288
|
+
...postcssOptions,
|
|
289
|
+
from: input,
|
|
290
|
+
to: output
|
|
347
291
|
})).then((result)=>{
|
|
348
292
|
if (!state.watcher) {
|
|
349
293
|
return result;
|
|
350
294
|
}
|
|
351
|
-
_sharedState.env.DEBUG && console.time(
|
|
295
|
+
_sharedState.env.DEBUG && console.time("Recording PostCSS dependencies");
|
|
352
296
|
for (let message of result.messages){
|
|
353
|
-
if (message.type ===
|
|
297
|
+
if (message.type === "dependency") {
|
|
354
298
|
state.contextDependencies.add(message.file);
|
|
355
299
|
}
|
|
356
300
|
}
|
|
357
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
301
|
+
_sharedState.env.DEBUG && console.timeEnd("Recording PostCSS dependencies");
|
|
358
302
|
// TODO: This needs to be in a different spot
|
|
359
|
-
_sharedState.env.DEBUG && console.time(
|
|
303
|
+
_sharedState.env.DEBUG && console.time("Watch new files");
|
|
360
304
|
state.watcher.refreshWatchedFiles();
|
|
361
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
305
|
+
_sharedState.env.DEBUG && console.timeEnd("Watch new files");
|
|
362
306
|
return result;
|
|
363
307
|
}).then((result)=>{
|
|
364
308
|
if (!output) {
|
|
365
|
-
process.stdout.write(
|
|
309
|
+
process.stdout.write(result.css);
|
|
366
310
|
return;
|
|
367
311
|
}
|
|
368
312
|
return Promise.all([
|
|
369
|
-
(0, _utils.outputFile)(result.opts.to,
|
|
370
|
-
result.map && (0, _utils.outputFile)(result.opts.to +
|
|
313
|
+
(0, _utils.outputFile)(result.opts.to, result.css),
|
|
314
|
+
result.map && (0, _utils.outputFile)(result.opts.to + ".map", result.map.toString())
|
|
371
315
|
]);
|
|
372
316
|
}).then(()=>{
|
|
373
317
|
let end = process.hrtime.bigint();
|
|
374
318
|
console.error();
|
|
375
|
-
console.error(
|
|
319
|
+
console.error("Done in", (end - start) / BigInt(1e6) + "ms.");
|
|
376
320
|
}).then(()=>{}, (err)=>{
|
|
377
321
|
// TODO: If an initial build fails we can't easily pick up any PostCSS dependencies
|
|
378
322
|
// that were collected before the error occurred
|
|
@@ -398,7 +342,7 @@ async function createProcessor(args, cliConfigPath) {
|
|
|
398
342
|
extension: change.extension
|
|
399
343
|
})));
|
|
400
344
|
}
|
|
401
|
-
if (input !== undefined && input !==
|
|
345
|
+
if (input !== undefined && input !== "-") {
|
|
402
346
|
state.contextDependencies.add(_path.default.resolve(input));
|
|
403
347
|
}
|
|
404
348
|
return {
|