Skip to content

Commit 0b3c0a3

Browse files
committed
test: add tailwindcss2 case
1 parent 130ce38 commit 0b3c0a3

File tree

9 files changed

+892
-12
lines changed

9 files changed

+892
-12
lines changed

packages/tailwindcss-patch/test/__snapshots__/index.test.ts.snap

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,98 @@ function processTailwindFeatures(setupContext) {
122122
}
123123
`;
124124

125+
exports[`versions-patch > patch tailwindcss2 1`] = `
126+
{
127+
"lib/jit/index.js": ""use strict";
128+
129+
Object.defineProperty(exports, "__esModule", {
130+
value: true
131+
});
132+
exports.default = _default;
133+
var _setupTrackingContext = _interopRequireDefault(require("./lib/setupTrackingContext"));
134+
var _setupWatchingContext = _interopRequireDefault(require("./lib/setupWatchingContext"));
135+
var _sharedState = require("./lib/sharedState");
136+
var _processTailwindFeatures = _interopRequireDefault(require("./processTailwindFeatures"));
137+
function _interopRequireDefault(obj) {
138+
return obj && obj.__esModule ? obj : {
139+
default: obj
140+
};
141+
}
142+
var contextRef = {
143+
value: []
144+
};
145+
exports.contextRef = contextRef;
146+
function _default(configOrPath = {}) {
147+
return [_sharedState.env.DEBUG && function (root) {
148+
console.log('\\n');
149+
console.time('JIT TOTAL');
150+
return root;
151+
}, function (root, result) {
152+
contextRef.value.length = 0;
153+
let setupContext = _sharedState.env.TAILWIND_MODE === 'watch' ? (0, _setupWatchingContext.default)(configOrPath) : (0, _setupTrackingContext.default)(configOrPath);
154+
contextRef.value.push((0, _processTailwindFeatures.default)(setupContext)(root, result));
155+
}, _sharedState.env.DEBUG && function (root) {
156+
console.timeEnd('JIT TOTAL');
157+
console.log('\\n');
158+
return root;
159+
}].filter(Boolean);
160+
}",
161+
"lib/jit/processTailwindFeatures.js": ""use strict";
162+
163+
Object.defineProperty(exports, "__esModule", {
164+
value: true
165+
});
166+
exports.default = processTailwindFeatures;
167+
var _normalizeTailwindDirectives = _interopRequireDefault(require("./lib/normalizeTailwindDirectives"));
168+
var _expandTailwindAtRules = _interopRequireDefault(require("./lib/expandTailwindAtRules"));
169+
var _expandApplyAtRules = _interopRequireDefault(require("./lib/expandApplyAtRules"));
170+
var _evaluateTailwindFunctions = _interopRequireDefault(require("../lib/evaluateTailwindFunctions"));
171+
var _substituteScreenAtRules = _interopRequireDefault(require("../lib/substituteScreenAtRules"));
172+
var _resolveDefaultsAtRules = _interopRequireDefault(require("./lib/resolveDefaultsAtRules"));
173+
var _collapseAdjacentRules = _interopRequireDefault(require("./lib/collapseAdjacentRules"));
174+
var _setupContextUtils = require("./lib/setupContextUtils");
175+
var _log = _interopRequireDefault(require("../util/log"));
176+
function _interopRequireDefault(obj) {
177+
return obj && obj.__esModule ? obj : {
178+
default: obj
179+
};
180+
}
181+
let warned = false;
182+
function processTailwindFeatures(setupContext) {
183+
return function (root, result) {
184+
if (!warned) {
185+
_log.default.warn([\`You have enabled the JIT engine which is currently in preview.\`, 'Preview features are not covered by semver, may introduce breaking changes, and can change at any time.']);
186+
warned = true;
187+
}
188+
let tailwindDirectives = (0, _normalizeTailwindDirectives.default)(root);
189+
let context = setupContext({
190+
tailwindDirectives,
191+
registerDependency(dependency) {
192+
result.messages.push({
193+
plugin: 'tailwindcss',
194+
parent: result.opts.from,
195+
...dependency
196+
});
197+
},
198+
createContext(tailwindConfig, changedContent) {
199+
return (0, _setupContextUtils.createContext)(tailwindConfig, changedContent, tailwindDirectives, root);
200+
}
201+
})(root, result);
202+
if (context.tailwindConfig.separator === '-') {
203+
throw new Error("The '-' character cannot be used as a custom separator in JIT mode due to parsing ambiguity. Please use another character like '_' instead.");
204+
}
205+
(0, _expandTailwindAtRules.default)(context)(root, result);
206+
(0, _expandApplyAtRules.default)(context)(root, result);
207+
(0, _evaluateTailwindFunctions.default)(context)(root, result);
208+
(0, _substituteScreenAtRules.default)(context)(root, result);
209+
(0, _resolveDefaultsAtRules.default)(context)(root, result);
210+
(0, _collapseAdjacentRules.default)(context)(root, result);
211+
return context;
212+
};
213+
}",
214+
}
215+
`;
216+
125217
exports[`versions-patch > patch tailwindcss3.0.0 1`] = `
126218
{
127219
"lib/index.js": ""use strict";
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
"use strict";
2+
3+
var _path = _interopRequireDefault(require("path"));
4+
5+
var _fs = _interopRequireDefault(require("fs"));
6+
7+
var _lodash = _interopRequireDefault(require("lodash"));
8+
9+
var _postcss = _interopRequireDefault(require("postcss"));
10+
11+
var _getModuleDependencies = _interopRequireDefault(require("./lib/getModuleDependencies"));
12+
13+
var _registerConfigAsDependency = _interopRequireDefault(require("./lib/registerConfigAsDependency"));
14+
15+
var _processTailwindFeatures = _interopRequireDefault(require("./processTailwindFeatures"));
16+
17+
var _formatCSS = _interopRequireDefault(require("./lib/formatCSS"));
18+
19+
var _resolveConfig = _interopRequireDefault(require("./util/resolveConfig"));
20+
21+
var _getAllConfigs = _interopRequireDefault(require("./util/getAllConfigs"));
22+
23+
var _constants = require("./constants");
24+
25+
var _defaultConfigStub = _interopRequireDefault(require("../stubs/defaultConfig.stub.js"));
26+
27+
var _jit = _interopRequireDefault(require("./jit"));
28+
29+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30+
31+
function resolveConfigPath(filePath) {
32+
// require('tailwindcss')({ theme: ..., variants: ... })
33+
if (_lodash.default.isObject(filePath) && !_lodash.default.has(filePath, 'config') && !_lodash.default.isEmpty(filePath)) {
34+
return undefined;
35+
} // require('tailwindcss')({ config: 'custom-config.js' })
36+
37+
38+
if (_lodash.default.isObject(filePath) && _lodash.default.has(filePath, 'config') && _lodash.default.isString(filePath.config)) {
39+
return _path.default.resolve(filePath.config);
40+
} // require('tailwindcss')({ config: { theme: ..., variants: ... } })
41+
42+
43+
if (_lodash.default.isObject(filePath) && _lodash.default.has(filePath, 'config') && _lodash.default.isObject(filePath.config)) {
44+
return undefined;
45+
} // require('tailwindcss')('custom-config.js')
46+
47+
48+
if (_lodash.default.isString(filePath)) {
49+
return _path.default.resolve(filePath);
50+
} // require('tailwindcss')
51+
52+
53+
for (const configFile of _constants.supportedConfigFiles) {
54+
try {
55+
const configPath = _path.default.resolve(configFile);
56+
57+
_fs.default.accessSync(configPath);
58+
59+
return configPath;
60+
} catch (err) {}
61+
}
62+
63+
return undefined;
64+
}
65+
66+
const getConfigFunction = config => () => {
67+
if (_lodash.default.isUndefined(config)) {
68+
return (0, _resolveConfig.default)([...(0, _getAllConfigs.default)(_defaultConfigStub.default)]);
69+
} // Skip this if Jest is running: https://github.com/facebook/jest/pull/9841#issuecomment-621417584
70+
71+
72+
if (process.env.JEST_WORKER_ID === undefined) {
73+
if (!_lodash.default.isObject(config)) {
74+
(0, _getModuleDependencies.default)(config).forEach(mdl => {
75+
delete require.cache[require.resolve(mdl.file)];
76+
});
77+
}
78+
}
79+
80+
const configObject = _lodash.default.isObject(config) ? _lodash.default.get(config, 'config', config) : require(config);
81+
return (0, _resolveConfig.default)([...(0, _getAllConfigs.default)(configObject)]);
82+
};
83+
84+
const plugin = _postcss.default.plugin('tailwindcss', config => {
85+
const resolvedConfigPath = resolveConfigPath(config);
86+
const getConfig = getConfigFunction(resolvedConfigPath || config);
87+
88+
const mode = _lodash.default.get(getConfig(), 'mode', 'aot');
89+
90+
if (mode === 'jit') {
91+
return (0, _postcss.default)((0, _jit.default)(config));
92+
}
93+
94+
const plugins = [];
95+
96+
if (!_lodash.default.isUndefined(resolvedConfigPath)) {
97+
plugins.push((0, _registerConfigAsDependency.default)(resolvedConfigPath));
98+
}
99+
100+
return (0, _postcss.default)([...plugins, (0, _processTailwindFeatures.default)(getConfig), _formatCSS.default]);
101+
});
102+
103+
module.exports = plugin;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.default = _default;
7+
8+
var _setupTrackingContext = _interopRequireDefault(require("./lib/setupTrackingContext"));
9+
10+
var _setupWatchingContext = _interopRequireDefault(require("./lib/setupWatchingContext"));
11+
12+
var _sharedState = require("./lib/sharedState");
13+
14+
var _processTailwindFeatures = _interopRequireDefault(require("./processTailwindFeatures"));
15+
16+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17+
18+
function _default(configOrPath = {}) {
19+
return [_sharedState.env.DEBUG && function (root) {
20+
console.log('\n');
21+
console.time('JIT TOTAL');
22+
return root;
23+
}, function (root, result) {
24+
let setupContext = _sharedState.env.TAILWIND_MODE === 'watch' ? (0, _setupWatchingContext.default)(configOrPath) : (0, _setupTrackingContext.default)(configOrPath);
25+
(0, _processTailwindFeatures.default)(setupContext)(root, result);
26+
}, _sharedState.env.DEBUG && function (root) {
27+
console.timeEnd('JIT TOTAL');
28+
console.log('\n');
29+
return root;
30+
}].filter(Boolean);
31+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.default = processTailwindFeatures;
7+
8+
var _normalizeTailwindDirectives = _interopRequireDefault(require("./lib/normalizeTailwindDirectives"));
9+
10+
var _expandTailwindAtRules = _interopRequireDefault(require("./lib/expandTailwindAtRules"));
11+
12+
var _expandApplyAtRules = _interopRequireDefault(require("./lib/expandApplyAtRules"));
13+
14+
var _evaluateTailwindFunctions = _interopRequireDefault(require("../lib/evaluateTailwindFunctions"));
15+
16+
var _substituteScreenAtRules = _interopRequireDefault(require("../lib/substituteScreenAtRules"));
17+
18+
var _resolveDefaultsAtRules = _interopRequireDefault(require("./lib/resolveDefaultsAtRules"));
19+
20+
var _collapseAdjacentRules = _interopRequireDefault(require("./lib/collapseAdjacentRules"));
21+
22+
var _setupContextUtils = require("./lib/setupContextUtils");
23+
24+
var _log = _interopRequireDefault(require("../util/log"));
25+
26+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27+
28+
let warned = false;
29+
30+
function processTailwindFeatures(setupContext) {
31+
return function (root, result) {
32+
if (!warned) {
33+
_log.default.warn([`You have enabled the JIT engine which is currently in preview.`, 'Preview features are not covered by semver, may introduce breaking changes, and can change at any time.']);
34+
35+
warned = true;
36+
}
37+
38+
let tailwindDirectives = (0, _normalizeTailwindDirectives.default)(root);
39+
let context = setupContext({
40+
tailwindDirectives,
41+
42+
registerDependency(dependency) {
43+
result.messages.push({
44+
plugin: 'tailwindcss',
45+
parent: result.opts.from,
46+
...dependency
47+
});
48+
},
49+
50+
createContext(tailwindConfig, changedContent) {
51+
return (0, _setupContextUtils.createContext)(tailwindConfig, changedContent, tailwindDirectives, root);
52+
}
53+
54+
})(root, result);
55+
56+
if (context.tailwindConfig.separator === '-') {
57+
throw new Error("The '-' character cannot be used as a custom separator in JIT mode due to parsing ambiguity. Please use another character like '_' instead.");
58+
}
59+
60+
(0, _expandTailwindAtRules.default)(context)(root, result);
61+
(0, _expandApplyAtRules.default)(context)(root, result);
62+
(0, _evaluateTailwindFunctions.default)(context)(root, result);
63+
(0, _substituteScreenAtRules.default)(context)(root, result);
64+
(0, _resolveDefaultsAtRules.default)(context)(root, result);
65+
(0, _collapseAdjacentRules.default)(context)(root, result);
66+
};
67+
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.default = _default;
7+
8+
var _lodash = _interopRequireDefault(require("lodash"));
9+
10+
var _postcss = _interopRequireDefault(require("postcss"));
11+
12+
var _substituteTailwindAtRules = _interopRequireDefault(require("./lib/substituteTailwindAtRules"));
13+
14+
var _evaluateTailwindFunctions = _interopRequireDefault(require("./lib/evaluateTailwindFunctions"));
15+
16+
var _substituteVariantsAtRules = _interopRequireDefault(require("./lib/substituteVariantsAtRules"));
17+
18+
var _substituteResponsiveAtRules = _interopRequireDefault(require("./lib/substituteResponsiveAtRules"));
19+
20+
var _convertLayerAtRulesToControlComments = _interopRequireDefault(require("./lib/convertLayerAtRulesToControlComments"));
21+
22+
var _substituteScreenAtRules = _interopRequireDefault(require("./lib/substituteScreenAtRules"));
23+
24+
var _substituteClassApplyAtRules = _interopRequireDefault(require("./lib/substituteClassApplyAtRules"));
25+
26+
var _applyImportantConfiguration = _interopRequireDefault(require("./lib/applyImportantConfiguration"));
27+
28+
var _purgeUnusedStyles = _interopRequireDefault(require("./lib/purgeUnusedStyles"));
29+
30+
var _corePlugins = _interopRequireDefault(require("./corePlugins"));
31+
32+
var _processPlugins = _interopRequireDefault(require("./util/processPlugins"));
33+
34+
var _cloneNodes = _interopRequireDefault(require("./util/cloneNodes"));
35+
36+
var _featureFlags = require("./featureFlags");
37+
38+
var _hashConfig = _interopRequireDefault(require("./util/hashConfig"));
39+
40+
var _log = _interopRequireDefault(require("./util/log"));
41+
42+
var _disposables = require("./util/disposables");
43+
44+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
45+
46+
let previousConfig = null;
47+
let processedPlugins = null;
48+
let getProcessedPlugins = null;
49+
50+
function _default(getConfig) {
51+
return function (css, result) {
52+
const config = getConfig();
53+
const configChanged = (0, _hashConfig.default)(previousConfig) !== (0, _hashConfig.default)(config);
54+
previousConfig = config;
55+
56+
if (configChanged) {
57+
_disposables.shared.dispose();
58+
59+
if (config.target) {
60+
_log.default.warn(['The `target` feature has been removed in Tailwind CSS v2.0.', 'Please remove this option from your config file to silence this warning.']);
61+
}
62+
63+
(0, _featureFlags.issueFlagNotices)(config);
64+
processedPlugins = (0, _processPlugins.default)([...(0, _corePlugins.default)(config), ..._lodash.default.get(config, 'plugins', [])], config);
65+
66+
getProcessedPlugins = function () {
67+
return { ...processedPlugins,
68+
base: (0, _cloneNodes.default)(processedPlugins.base),
69+
components: (0, _cloneNodes.default)(processedPlugins.components),
70+
utilities: (0, _cloneNodes.default)(processedPlugins.utilities)
71+
};
72+
};
73+
}
74+
75+
function registerDependency(dependency) {
76+
result.messages.push({
77+
plugin: 'tailwindcss',
78+
parent: result.opts.from,
79+
...dependency
80+
});
81+
}
82+
83+
return (0, _postcss.default)([(0, _substituteTailwindAtRules.default)(config, getProcessedPlugins()), (0, _evaluateTailwindFunctions.default)({
84+
tailwindConfig: config
85+
}), (0, _substituteVariantsAtRules.default)(config, getProcessedPlugins()), (0, _substituteResponsiveAtRules.default)(config), (0, _convertLayerAtRulesToControlComments.default)(config), (0, _substituteScreenAtRules.default)({
86+
tailwindConfig: config
87+
}), (0, _substituteClassApplyAtRules.default)(config, getProcessedPlugins, configChanged), (0, _applyImportantConfiguration.default)(config), (0, _purgeUnusedStyles.default)(config, configChanged, registerDependency)]).process(css, {
88+
from: _lodash.default.get(css, 'source.input.file')
89+
});
90+
};
91+
}

0 commit comments

Comments
 (0)