103 lines
3.5 KiB
JavaScript
103 lines
3.5 KiB
JavaScript
"use strict";
|
|
|
|
var _path = _interopRequireDefault(require("path"));
|
|
|
|
var _fs = _interopRequireDefault(require("fs"));
|
|
|
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
|
var _postcss = _interopRequireDefault(require("postcss"));
|
|
|
|
var _getModuleDependencies = _interopRequireDefault(require("./lib/getModuleDependencies"));
|
|
|
|
var _registerConfigAsDependency = _interopRequireDefault(require("./lib/registerConfigAsDependency"));
|
|
|
|
var _processTailwindFeatures = _interopRequireDefault(require("./processTailwindFeatures"));
|
|
|
|
var _formatCSS = _interopRequireDefault(require("./lib/formatCSS"));
|
|
|
|
var _resolveConfig = _interopRequireDefault(require("./util/resolveConfig"));
|
|
|
|
var _getAllConfigs = _interopRequireDefault(require("./util/getAllConfigs"));
|
|
|
|
var _constants = require("./constants");
|
|
|
|
var _defaultConfigStub = _interopRequireDefault(require("../stubs/defaultConfig.stub.js"));
|
|
|
|
var _jit = _interopRequireDefault(require("./jit"));
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
function resolveConfigPath(filePath) {
|
|
// require('tailwindcss')({ theme: ..., variants: ... })
|
|
if (_lodash.default.isObject(filePath) && !_lodash.default.has(filePath, 'config') && !_lodash.default.isEmpty(filePath)) {
|
|
return undefined;
|
|
} // require('tailwindcss')({ config: 'custom-config.js' })
|
|
|
|
|
|
if (_lodash.default.isObject(filePath) && _lodash.default.has(filePath, 'config') && _lodash.default.isString(filePath.config)) {
|
|
return _path.default.resolve(filePath.config);
|
|
} // require('tailwindcss')({ config: { theme: ..., variants: ... } })
|
|
|
|
|
|
if (_lodash.default.isObject(filePath) && _lodash.default.has(filePath, 'config') && _lodash.default.isObject(filePath.config)) {
|
|
return undefined;
|
|
} // require('tailwindcss')('custom-config.js')
|
|
|
|
|
|
if (_lodash.default.isString(filePath)) {
|
|
return _path.default.resolve(filePath);
|
|
} // require('tailwindcss')
|
|
|
|
|
|
for (const configFile of _constants.supportedConfigFiles) {
|
|
try {
|
|
const configPath = _path.default.resolve(configFile);
|
|
|
|
_fs.default.accessSync(configPath);
|
|
|
|
return configPath;
|
|
} catch (err) {}
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
const getConfigFunction = config => () => {
|
|
if (_lodash.default.isUndefined(config)) {
|
|
return (0, _resolveConfig.default)([...(0, _getAllConfigs.default)(_defaultConfigStub.default)]);
|
|
} // Skip this if Jest is running: https://github.com/facebook/jest/pull/9841#issuecomment-621417584
|
|
|
|
|
|
if (process.env.JEST_WORKER_ID === undefined) {
|
|
if (!_lodash.default.isObject(config)) {
|
|
(0, _getModuleDependencies.default)(config).forEach(mdl => {
|
|
delete require.cache[require.resolve(mdl.file)];
|
|
});
|
|
}
|
|
}
|
|
|
|
const configObject = _lodash.default.isObject(config) ? _lodash.default.get(config, 'config', config) : require(config);
|
|
return (0, _resolveConfig.default)([...(0, _getAllConfigs.default)(configObject)]);
|
|
};
|
|
|
|
const plugin = _postcss.default.plugin('tailwindcss', config => {
|
|
const resolvedConfigPath = resolveConfigPath(config);
|
|
const getConfig = getConfigFunction(resolvedConfigPath || config);
|
|
|
|
const mode = _lodash.default.get(getConfig(), 'mode', 'aot');
|
|
|
|
if (mode === 'jit') {
|
|
return (0, _postcss.default)((0, _jit.default)(config));
|
|
}
|
|
|
|
const plugins = [];
|
|
|
|
if (!_lodash.default.isUndefined(resolvedConfigPath)) {
|
|
plugins.push((0, _registerConfigAsDependency.default)(resolvedConfigPath));
|
|
}
|
|
|
|
return (0, _postcss.default)([...plugins, (0, _processTailwindFeatures.default)(getConfig), _formatCSS.default]);
|
|
});
|
|
|
|
module.exports = plugin; |