UNPKG

3.23 kBJavaScriptView Raw
1"use strict";
2
3var _path = _interopRequireDefault(require("path"));
4
5var _fs = _interopRequireDefault(require("fs"));
6
7var _lodash = _interopRequireDefault(require("lodash"));
8
9var _postcss = _interopRequireDefault(require("postcss"));
10
11var _getModuleDependencies = _interopRequireDefault(require("./lib/getModuleDependencies"));
12
13var _registerConfigAsDependency = _interopRequireDefault(require("./lib/registerConfigAsDependency"));
14
15var _processTailwindFeatures = _interopRequireDefault(require("./processTailwindFeatures"));
16
17var _formatCSS = _interopRequireDefault(require("./lib/formatCSS"));
18
19var _resolveConfig = _interopRequireDefault(require("./util/resolveConfig"));
20
21var _constants = require("./constants");
22
23var _defaultConfigStub = _interopRequireDefault(require("../stubs/defaultConfig.stub.js"));
24
25function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
27function resolveConfigPath(filePath) {
28 // require('tailwindcss')({ theme: ..., variants: ... })
29 if (_lodash.default.isObject(filePath) && !_lodash.default.has(filePath, 'config') && !_lodash.default.isEmpty(filePath)) {
30 return undefined;
31 } // require('tailwindcss')({ config: 'custom-config.js' })
32
33
34 if (_lodash.default.isObject(filePath) && _lodash.default.has(filePath, 'config') && _lodash.default.isString(filePath.config)) {
35 return _path.default.resolve(filePath.config);
36 } // require('tailwindcss')({ config: { theme: ..., variants: ... } })
37
38
39 if (_lodash.default.isObject(filePath) && _lodash.default.has(filePath, 'config') && _lodash.default.isObject(filePath.config)) {
40 undefined;
41 } // require('tailwindcss')('custom-config.js')
42
43
44 if (_lodash.default.isString(filePath)) {
45 return _path.default.resolve(filePath);
46 } // require('tailwindcss')
47
48
49 try {
50 const defaultConfigPath = _path.default.resolve(_constants.defaultConfigFile);
51
52 _fs.default.accessSync(defaultConfigPath);
53
54 return defaultConfigPath;
55 } catch (err) {
56 return undefined;
57 }
58}
59
60const getConfigFunction = config => () => {
61 if (_lodash.default.isUndefined(config) && !_lodash.default.isObject(config)) {
62 return (0, _resolveConfig.default)([_defaultConfigStub.default]);
63 } // Skip this if Jest is running: https://github.com/facebook/jest/pull/9841#issuecomment-621417584
64
65
66 if (process.env.JEST_WORKER_ID === undefined) {
67 if (!_lodash.default.isObject(config)) {
68 (0, _getModuleDependencies.default)(config).forEach(mdl => {
69 delete require.cache[require.resolve(mdl.file)];
70 });
71 }
72 }
73
74 const configObject = _lodash.default.isObject(config) ? _lodash.default.get(config, 'config', config) : require(config);
75 return (0, _resolveConfig.default)([configObject, _defaultConfigStub.default]);
76};
77
78const plugin = _postcss.default.plugin('tailwind', config => {
79 const plugins = [];
80 const resolvedConfigPath = resolveConfigPath(config);
81
82 if (!_lodash.default.isUndefined(resolvedConfigPath)) {
83 plugins.push((0, _registerConfigAsDependency.default)(resolvedConfigPath));
84 }
85
86 return (0, _postcss.default)([...plugins, (0, _processTailwindFeatures.default)(getConfigFunction(resolvedConfigPath || config)), _formatCSS.default]);
87});
88
89module.exports = plugin;
\No newline at end of file