tailwindcss 0.0.0-insiders.89ec6fb → 0.0.0-insiders.89f0f54
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 +1 -1
- package/lib/cli/build/deps.js +62 -0
- package/lib/cli/build/index.js +12 -15
- package/lib/cli/build/plugin.js +104 -155
- 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 +5 -1
- package/lib/corePluginList.js +3 -1
- package/lib/corePlugins.js +1985 -1903
- package/lib/css/preflight.css +17 -12
- package/lib/featureFlags.js +22 -23
- 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 +6 -32
- package/lib/lib/defaultExtractor.js +26 -14
- package/lib/lib/detectNesting.js +10 -10
- package/lib/lib/evaluateTailwindFunctions.js +22 -22
- package/lib/lib/expandApplyAtRules.js +19 -19
- package/lib/lib/expandTailwindAtRules.js +57 -79
- package/lib/lib/findAtConfigPath.js +5 -5
- package/lib/lib/generateRules.js +74 -62
- package/lib/lib/getModuleDependencies.js +23 -23
- package/lib/lib/load-config.js +17 -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 +30 -28
- package/lib/lib/setupContextUtils.js +159 -132
- package/lib/lib/setupTrackingContext.js +3 -3
- package/lib/lib/sharedState.js +32 -24
- package/lib/lib/substituteScreenAtRules.js +4 -4
- package/lib/oxide/cli/build/deps.js +89 -0
- package/lib/oxide/cli/build/index.js +53 -0
- package/lib/oxide/cli/build/plugin.js +375 -0
- package/lib/oxide/cli/build/utils.js +87 -0
- package/lib/oxide/cli/build/watching.js +179 -0
- package/lib/oxide/cli/help/index.js +72 -0
- package/lib/oxide/cli/index.js +214 -0
- package/lib/oxide/cli/init/index.js +52 -0
- package/lib/oxide/cli.js +5 -0
- package/lib/oxide/postcss-plugin.js +2 -0
- package/lib/plugin.js +37 -105
- package/lib/postcss-plugins/nesting/index.js +2 -2
- package/lib/postcss-plugins/nesting/plugin.js +10 -10
- package/lib/processTailwindFeatures.js +3 -3
- package/lib/public/colors.js +264 -264
- package/lib/util/applyImportantSelector.js +2 -2
- 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 +180 -147
- 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 -85
- package/lib/util/normalizeScreens.js +22 -22
- package/lib/util/parseAnimationValue.js +38 -38
- package/lib/util/parseBoxShadowValue.js +21 -21
- package/lib/util/parseDependency.js +4 -4
- package/lib/util/parseGlob.js +4 -4
- 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 +1 -1
- package/lib/util/resolveConfig.js +43 -50
- package/lib/util/resolveConfigPath.js +6 -6
- package/lib/util/responsive.js +1 -1
- package/lib/util/splitAtTopLevelOnly.js +3 -3
- 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 +8 -8
- 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 +44 -36
- package/peers/index.js +96503 -0
- package/resolveConfig.d.ts +22 -3
- package/scripts/generate-types.js +1 -2
- package/scripts/release-notes.js +1 -1
- package/scripts/swap-engines.js +40 -0
- package/src/cli/build/deps.js +56 -0
- package/src/cli/build/index.js +0 -4
- package/src/cli/build/plugin.js +50 -72
- package/src/cli/index.js +0 -1
- package/src/cli-peer-dependencies.js +15 -0
- package/src/cli.js +5 -1
- package/src/corePluginList.js +1 -1
- package/src/corePlugins.js +76 -11
- package/src/css/preflight.css +17 -12
- package/src/featureFlags.js +9 -7
- package/src/lib/content.js +1 -33
- package/src/lib/defaultExtractor.js +18 -3
- package/src/lib/expandTailwindAtRules.js +46 -69
- package/src/lib/generateRules.js +24 -4
- package/src/lib/load-config.ts +8 -0
- package/src/lib/normalizeTailwindDirectives.js +27 -0
- package/src/lib/offsets.js +62 -3
- package/src/lib/resolveDefaultsAtRules.js +5 -1
- package/src/lib/setupContextUtils.js +41 -8
- package/src/lib/sharedState.js +4 -0
- package/src/oxide/cli/build/deps.ts +91 -0
- package/src/oxide/cli/build/index.ts +47 -0
- package/src/oxide/cli/build/plugin.ts +442 -0
- package/src/oxide/cli/build/utils.ts +74 -0
- package/src/oxide/cli/build/watching.ts +225 -0
- package/src/oxide/cli/help/index.ts +69 -0
- package/src/oxide/cli/index.ts +204 -0
- package/src/oxide/cli/init/index.ts +59 -0
- package/src/oxide/cli.ts +1 -0
- package/src/oxide/postcss-plugin.ts +1 -0
- package/src/plugin.js +57 -83
- package/src/util/cloneNodes.js +35 -14
- package/src/util/dataTypes.js +50 -6
- package/src/util/formatVariantSelector.js +1 -1
- package/src/util/log.js +0 -24
- package/src/util/normalizeConfig.js +11 -38
- package/src/util/pluginUtils.js +20 -0
- package/src/util/pseudoElements.js +4 -0
- package/src/util/resolveConfig.js +24 -42
- package/src/util/validateConfig.js +0 -10
- package/stubs/config.full.js +44 -8
- 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 +12 -7
- package/types/generated/corePluginList.d.ts +1 -1
- package/types/generated/default-theme.d.ts +3 -6
- package/index.css +0 -5
- package/lib/lib/handleImportAtRules.js +0 -50
- package/src/lib/handleImportAtRules.js +0 -34
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
<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=master" alt="Build Status"></a>
|
|
17
|
+
<a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci-stable.yml?branch=master" alt="Build Status"></a>
|
|
18
18
|
<a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
|
|
19
19
|
<a href="https://github.com/tailwindcss/tailwindcss/releases"><img src="https://img.shields.io/npm/v/tailwindcss.svg" alt="Latest Release"></a>
|
|
20
20
|
<a href="https://github.com/tailwindcss/tailwindcss/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
|
|
@@ -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,9 +157,9 @@ 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 = [];
|
|
@@ -212,23 +167,23 @@ let state = {
|
|
|
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);
|
|
214
169
|
for (let file of files){
|
|
215
|
-
if (
|
|
170
|
+
if (false) {
|
|
216
171
|
content.push({
|
|
217
172
|
file,
|
|
218
173
|
extension: _path.default.extname(file).slice(1)
|
|
219
174
|
});
|
|
220
175
|
} else {
|
|
221
176
|
content.push({
|
|
222
|
-
content: _fs.default.readFileSync(_path.default.resolve(file),
|
|
177
|
+
content: _fs.default.readFileSync(_path.default.resolve(file), "utf8"),
|
|
223
178
|
extension: _path.default.extname(file).slice(1)
|
|
224
179
|
});
|
|
225
180
|
}
|
|
226
181
|
}
|
|
227
182
|
// Resolve raw content in the tailwind config
|
|
228
183
|
let rawContent = this.config.content.files.filter((file)=>{
|
|
229
|
-
return file !== null && typeof file ===
|
|
184
|
+
return file !== null && typeof file === "object";
|
|
230
185
|
});
|
|
231
|
-
for (let { raw: htmlContent, extension =
|
|
186
|
+
for (let { raw: htmlContent , extension ="html" } of rawContent){
|
|
232
187
|
content.push({
|
|
233
188
|
content: htmlContent,
|
|
234
189
|
extension
|
|
@@ -236,31 +191,31 @@ let state = {
|
|
|
236
191
|
}
|
|
237
192
|
return content;
|
|
238
193
|
},
|
|
239
|
-
getContext ({ createContext, cliConfigPath, root, result, content
|
|
194
|
+
getContext ({ createContext , cliConfigPath , root , result , content }) {
|
|
195
|
+
_sharedState.env.DEBUG && console.time("Searching for config");
|
|
196
|
+
var _findAtConfigPath1;
|
|
197
|
+
let configPath = (_findAtConfigPath1 = (0, _findAtConfigPath.findAtConfigPath)(root, result)) !== null && _findAtConfigPath1 !== void 0 ? _findAtConfigPath1 : cliConfigPath;
|
|
198
|
+
_sharedState.env.DEBUG && console.timeEnd("Searching for config");
|
|
240
199
|
if (this.context) {
|
|
241
200
|
this.context.changedContent = this.changedContent.splice(0);
|
|
242
201
|
return this.context;
|
|
243
202
|
}
|
|
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');
|
|
203
|
+
_sharedState.env.DEBUG && console.time("Loading config");
|
|
249
204
|
let config = this.loadConfig(configPath, content);
|
|
250
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
251
|
-
_sharedState.env.DEBUG && console.time(
|
|
205
|
+
_sharedState.env.DEBUG && console.timeEnd("Loading config");
|
|
206
|
+
_sharedState.env.DEBUG && console.time("Creating context");
|
|
252
207
|
this.context = createContext(config, []);
|
|
253
208
|
Object.assign(this.context, {
|
|
254
209
|
userConfigPath: configPath
|
|
255
210
|
});
|
|
256
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
257
|
-
_sharedState.env.DEBUG && console.time(
|
|
211
|
+
_sharedState.env.DEBUG && console.timeEnd("Creating context");
|
|
212
|
+
_sharedState.env.DEBUG && console.time("Resolving content paths");
|
|
258
213
|
this.refreshContentPaths();
|
|
259
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
214
|
+
_sharedState.env.DEBUG && console.timeEnd("Resolving content paths");
|
|
260
215
|
if (this.watcher) {
|
|
261
|
-
_sharedState.env.DEBUG && console.time(
|
|
216
|
+
_sharedState.env.DEBUG && console.time("Watch new files");
|
|
262
217
|
this.watcher.refreshWatchedFiles();
|
|
263
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
218
|
+
_sharedState.env.DEBUG && console.timeEnd("Watch new files");
|
|
264
219
|
}
|
|
265
220
|
for (let file of this.readContentPaths()){
|
|
266
221
|
this.context.changedContent.push(file);
|
|
@@ -270,35 +225,31 @@ let state = {
|
|
|
270
225
|
};
|
|
271
226
|
async function createProcessor(args, cliConfigPath) {
|
|
272
227
|
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.'
|
|
228
|
+
let postcss = (0, _deps.loadPostcss)();
|
|
229
|
+
let input = args["--input"];
|
|
230
|
+
let output = args["--output"];
|
|
231
|
+
let includePostCss = args["--postcss"];
|
|
232
|
+
let customPostCssPath = typeof args["--postcss"] === "string" ? args["--postcss"] : undefined;
|
|
233
|
+
let [beforePlugins, afterPlugins, postcssOptions] = includePostCss ? await loadPostCssPlugins(customPostCssPath) : loadBuiltinPostcssPlugins();
|
|
234
|
+
if (args["--purge"]) {
|
|
235
|
+
_log.default.warn("purge-flag-deprecated", [
|
|
236
|
+
"The `--purge` flag has been deprecated.",
|
|
237
|
+
"Please use `--content` instead."
|
|
287
238
|
]);
|
|
288
|
-
if (!args[
|
|
289
|
-
args[
|
|
239
|
+
if (!args["--content"]) {
|
|
240
|
+
args["--content"] = args["--purge"];
|
|
290
241
|
}
|
|
291
242
|
}
|
|
292
243
|
var _args_content_split;
|
|
293
|
-
let content = (_args_content_split = (_args_content = args[
|
|
244
|
+
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
245
|
let tailwindPlugin = ()=>{
|
|
295
246
|
return {
|
|
296
|
-
postcssPlugin:
|
|
297
|
-
async Once (root, { result
|
|
298
|
-
_sharedState.env.DEBUG && console.time(
|
|
299
|
-
await (0, _processTailwindFeatures.default)(({ createContext
|
|
247
|
+
postcssPlugin: "tailwindcss",
|
|
248
|
+
async Once (root, { result }) {
|
|
249
|
+
_sharedState.env.DEBUG && console.time("Compiling CSS");
|
|
250
|
+
await (0, _processTailwindFeatures.default)(({ createContext })=>{
|
|
300
251
|
console.error();
|
|
301
|
-
console.error(
|
|
252
|
+
console.error("Rebuilding...");
|
|
302
253
|
return ()=>{
|
|
303
254
|
return state.getContext({
|
|
304
255
|
createContext,
|
|
@@ -309,7 +260,7 @@ async function createProcessor(args, cliConfigPath) {
|
|
|
309
260
|
});
|
|
310
261
|
};
|
|
311
262
|
})(root, result);
|
|
312
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
263
|
+
_sharedState.env.DEBUG && console.timeEnd("Compiling CSS");
|
|
313
264
|
}
|
|
314
265
|
};
|
|
315
266
|
};
|
|
@@ -317,62 +268,60 @@ async function createProcessor(args, cliConfigPath) {
|
|
|
317
268
|
let plugins = [
|
|
318
269
|
...beforePlugins,
|
|
319
270
|
tailwindPlugin,
|
|
320
|
-
!args[
|
|
321
|
-
...afterPlugins
|
|
271
|
+
!args["--minify"] && _utils.formatNodes,
|
|
272
|
+
...afterPlugins,
|
|
273
|
+
!args["--no-autoprefixer"] && (0, _deps.loadAutoprefixer)(),
|
|
274
|
+
args["--minify"] && (0, _deps.loadCssNano)()
|
|
322
275
|
].filter(Boolean);
|
|
323
276
|
/** @type {import('postcss').Processor} */ // @ts-ignore
|
|
324
|
-
let processor = (
|
|
277
|
+
let processor = postcss(plugins);
|
|
325
278
|
async function readInput() {
|
|
326
279
|
// Piping in data, let's drain the stdin
|
|
327
|
-
if (input ===
|
|
280
|
+
if (input === "-") {
|
|
328
281
|
return (0, _utils.drainStdin)();
|
|
329
282
|
}
|
|
330
283
|
// Input file has been provided
|
|
331
284
|
if (input) {
|
|
332
|
-
return _fs.default.promises.readFile(_path.default.resolve(input),
|
|
285
|
+
return _fs.default.promises.readFile(_path.default.resolve(input), "utf8");
|
|
333
286
|
}
|
|
334
287
|
// No input file provided, fallback to default atrules
|
|
335
|
-
return
|
|
288
|
+
return "@tailwind base; @tailwind components; @tailwind utilities";
|
|
336
289
|
}
|
|
337
290
|
async function build() {
|
|
338
291
|
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']
|
|
292
|
+
return readInput().then((css)=>processor.process(css, {
|
|
293
|
+
...postcssOptions,
|
|
294
|
+
from: input,
|
|
295
|
+
to: output
|
|
347
296
|
})).then((result)=>{
|
|
348
297
|
if (!state.watcher) {
|
|
349
298
|
return result;
|
|
350
299
|
}
|
|
351
|
-
_sharedState.env.DEBUG && console.time(
|
|
300
|
+
_sharedState.env.DEBUG && console.time("Recording PostCSS dependencies");
|
|
352
301
|
for (let message of result.messages){
|
|
353
|
-
if (message.type ===
|
|
302
|
+
if (message.type === "dependency") {
|
|
354
303
|
state.contextDependencies.add(message.file);
|
|
355
304
|
}
|
|
356
305
|
}
|
|
357
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
306
|
+
_sharedState.env.DEBUG && console.timeEnd("Recording PostCSS dependencies");
|
|
358
307
|
// TODO: This needs to be in a different spot
|
|
359
|
-
_sharedState.env.DEBUG && console.time(
|
|
308
|
+
_sharedState.env.DEBUG && console.time("Watch new files");
|
|
360
309
|
state.watcher.refreshWatchedFiles();
|
|
361
|
-
_sharedState.env.DEBUG && console.timeEnd(
|
|
310
|
+
_sharedState.env.DEBUG && console.timeEnd("Watch new files");
|
|
362
311
|
return result;
|
|
363
312
|
}).then((result)=>{
|
|
364
313
|
if (!output) {
|
|
365
|
-
process.stdout.write(
|
|
314
|
+
process.stdout.write(result.css);
|
|
366
315
|
return;
|
|
367
316
|
}
|
|
368
317
|
return Promise.all([
|
|
369
|
-
(0, _utils.outputFile)(result.opts.to,
|
|
370
|
-
result.map && (0, _utils.outputFile)(result.opts.to +
|
|
318
|
+
(0, _utils.outputFile)(result.opts.to, result.css),
|
|
319
|
+
result.map && (0, _utils.outputFile)(result.opts.to + ".map", result.map.toString())
|
|
371
320
|
]);
|
|
372
321
|
}).then(()=>{
|
|
373
322
|
let end = process.hrtime.bigint();
|
|
374
323
|
console.error();
|
|
375
|
-
console.error(
|
|
324
|
+
console.error("Done in", (end - start) / BigInt(1e6) + "ms.");
|
|
376
325
|
}).then(()=>{}, (err)=>{
|
|
377
326
|
// TODO: If an initial build fails we can't easily pick up any PostCSS dependencies
|
|
378
327
|
// that were collected before the error occurred
|
|
@@ -398,7 +347,7 @@ async function createProcessor(args, cliConfigPath) {
|
|
|
398
347
|
extension: change.extension
|
|
399
348
|
})));
|
|
400
349
|
}
|
|
401
|
-
if (input !== undefined && input !==
|
|
350
|
+
if (input !== undefined && input !== "-") {
|
|
402
351
|
state.contextDependencies.add(_path.default.resolve(input));
|
|
403
352
|
}
|
|
404
353
|
return {
|
package/lib/cli/build/utils.js
CHANGED
|
@@ -10,20 +10,20 @@ function _export(target, all) {
|
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
12
|
_export(exports, {
|
|
13
|
-
|
|
14
|
-
return
|
|
13
|
+
indentRecursive: function() {
|
|
14
|
+
return indentRecursive;
|
|
15
15
|
},
|
|
16
16
|
formatNodes: function() {
|
|
17
17
|
return formatNodes;
|
|
18
18
|
},
|
|
19
|
-
|
|
20
|
-
return
|
|
19
|
+
readFileWithRetries: function() {
|
|
20
|
+
return readFileWithRetries;
|
|
21
|
+
},
|
|
22
|
+
drainStdin: function() {
|
|
23
|
+
return drainStdin;
|
|
21
24
|
},
|
|
22
25
|
outputFile: function() {
|
|
23
26
|
return outputFile;
|
|
24
|
-
},
|
|
25
|
-
readFileWithRetries: function() {
|
|
26
|
-
return readFileWithRetries;
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
@@ -35,26 +35,26 @@ function _interop_require_default(obj) {
|
|
|
35
35
|
}
|
|
36
36
|
function indentRecursive(node, indent = 0) {
|
|
37
37
|
node.each && node.each((child, i)=>{
|
|
38
|
-
if (!child.raws.before || !child.raws.before.trim() || child.raws.before.includes(
|
|
39
|
-
child.raws.before = `\n${node.type !==
|
|
38
|
+
if (!child.raws.before || !child.raws.before.trim() || child.raws.before.includes("\n")) {
|
|
39
|
+
child.raws.before = `\n${node.type !== "rule" && i > 0 ? "\n" : ""}${" ".repeat(indent)}`;
|
|
40
40
|
}
|
|
41
|
-
child.raws.after = `\n${
|
|
41
|
+
child.raws.after = `\n${" ".repeat(indent)}`;
|
|
42
42
|
indentRecursive(child, indent + 1);
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
45
|
function formatNodes(root) {
|
|
46
46
|
indentRecursive(root);
|
|
47
47
|
if (root.first) {
|
|
48
|
-
root.first.raws.before =
|
|
48
|
+
root.first.raws.before = "";
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
async function readFileWithRetries(path, tries = 5) {
|
|
52
52
|
for(let n = 0; n <= tries; n++){
|
|
53
53
|
try {
|
|
54
|
-
return await _fs.default.promises.readFile(path,
|
|
54
|
+
return await _fs.default.promises.readFile(path, "utf8");
|
|
55
55
|
} catch (err) {
|
|
56
56
|
if (n !== tries) {
|
|
57
|
-
if (err.code ===
|
|
57
|
+
if (err.code === "ENOENT" || err.code === "EBUSY") {
|
|
58
58
|
await new Promise((resolve)=>setTimeout(resolve, 10));
|
|
59
59
|
continue;
|
|
60
60
|
}
|
|
@@ -65,24 +65,24 @@ async function readFileWithRetries(path, tries = 5) {
|
|
|
65
65
|
}
|
|
66
66
|
function drainStdin() {
|
|
67
67
|
return new Promise((resolve, reject)=>{
|
|
68
|
-
let result =
|
|
69
|
-
process.stdin.on(
|
|
68
|
+
let result = "";
|
|
69
|
+
process.stdin.on("data", (chunk)=>{
|
|
70
70
|
result += chunk;
|
|
71
71
|
});
|
|
72
|
-
process.stdin.on(
|
|
73
|
-
process.stdin.on(
|
|
72
|
+
process.stdin.on("end", ()=>resolve(result));
|
|
73
|
+
process.stdin.on("error", (err)=>reject(err));
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
76
|
async function outputFile(file, newContents) {
|
|
77
77
|
try {
|
|
78
|
-
let currentContents = await _fs.default.promises.readFile(file,
|
|
78
|
+
let currentContents = await _fs.default.promises.readFile(file, "utf8");
|
|
79
79
|
if (currentContents === newContents) {
|
|
80
80
|
return; // Skip writing the file
|
|
81
81
|
}
|
|
82
|
-
} catch
|
|
82
|
+
} catch {}
|
|
83
83
|
// Write the file
|
|
84
84
|
await _fs.default.promises.mkdir(_path.default.dirname(file), {
|
|
85
85
|
recursive: true
|
|
86
86
|
});
|
|
87
|
-
await _fs.default.promises.writeFile(file, newContents,
|
|
87
|
+
await _fs.default.promises.writeFile(file, newContents, "utf8");
|
|
88
88
|
}
|