From 2625552e76bf5b921c957832561b41b3c9eebd9d Mon Sep 17 00:00:00 2001 From: Charlie Date: Thu, 18 Mar 2021 19:46:39 +0800 Subject: [PATCH] improve(dev): support tailwind jit mode (#1473) --- gulpfile.js | 41 ++---------- package.json | 18 +++--- postcss.config.js | 6 +- resources/css/style.css | 1 - resources/css/style.dev.css | 1 - tailwind.all.css | 5 ++ yarn.lock | 126 +++++++++++++++++++++++++----------- 7 files changed, 114 insertions(+), 84 deletions(-) create mode 100644 tailwind.all.css diff --git a/gulpfile.js b/gulpfile.js index 1cf6f943282..de268c71379 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,11 +1,9 @@ const fs = require('fs') +const utils = require('util') const cp = require('child_process') +const exec = utils.promisify(cp.exec) const path = require('path') const gulp = require('gulp') -const postcss = require('gulp-postcss') -const concat = require('gulp-concat') -const cached = require('gulp-cached') -const remember = require('gulp-remember') const cleanCSS = require('gulp-clean-css') const del = require('del') @@ -14,46 +12,17 @@ const resourcesPath = path.join(__dirname, 'resources') const sourcePath = path.join(__dirname, 'src/main/frontend') const resourceFilePath = path.join(resourcesPath, '**') -const tailwindCoreEntry = path.join(__dirname, 'tailwind.css') -const tailwindBuildEntry = path.join(sourcePath, '**/*.css') -const tailwind = { - paths: [tailwindCoreEntry, tailwindBuildEntry], - outputDir: path.join(outputPath, 'css'), - outputName: 'tailwind.build.css', -} - const css = { - async watchCSS () { - // remove tailwind core css - await new Promise((resolve) => { - css._buildTailwind( - tailwind.paths.shift(), - 'tailwind.core.css' - ) - .on('end', resolve) - }) - - return gulp.watch( - tailwind.paths, { ignoreInitial: false }, - css._buildTailwind.bind(null, void 0, void 0)) + watchCSS () { + return exec(`yarn css:watch`, {}) }, buildCSS (...params) { return gulp.series( - css._buildTailwind.bind(null, tailwindCoreEntry, 'tailwind.core.css'), - css._buildTailwind.bind(null, tailwindBuildEntry, 'tailwind.build.css'), + () => exec(`yarn css:build`, {}), css._optimizeCSSForRelease)(...params) }, - _buildTailwind (entry, output) { - return gulp.src(entry || tailwind.paths) - .pipe(cached('postcss-' + entry)) - .pipe(postcss()) - .pipe(remember('postcss-' + entry)) - .pipe(concat(output || tailwind.outputName)) - .pipe(gulp.dest(tailwind.outputDir)) - }, - _optimizeCSSForRelease () { return gulp.src(path.join(outputPath, 'css', 'style.css')) .pipe(cleanCSS()) diff --git a/package.json b/package.json index 2f4d41f56ea..f6a2397206a 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "private": true, "main": "static/electron.js", "devDependencies": { + "@tailwindcss/jit": "^0.1.1", "@tailwindcss/ui": "0.7.2", "@types/gulp": "^4.0.7", "cross-env": "^7.0.3", @@ -11,18 +12,17 @@ "del": "^6.0.0", "gulp": "^4.0.2", "gulp-clean-css": "^4.3.0", - "gulp-concat": "^2.6.1", - "gulp-postcss": "^9.0.0", - "gulp-remember": "^1.0.1", "npm-run-all": "^4.1.5", - "postcss": "8.2.1", - "postcss-cli": "8.3.0", - "postcss-nested": "^5.0.1", - "purgecss": "3.0.0", + "postcss": "8.2.8", + "postcss-cli": "8.3.1", + "postcss-import": "^14.0.0", + "postcss-import-ext-glob": "^2.0.1", + "postcss-nested": "5.0.5", + "purgecss": "4.0.2", "shadow-cljs": "2.11.11", "stylelint": "^13.8.0", "stylelint-config-standard": "^20.0.0", - "tailwindcss": "2.0.1" + "tailwindcss": "2.0.3" }, "scripts": { "watch": "run-p gulp:build gulp:watch cljs:watch", @@ -41,6 +41,8 @@ "style:lint": "stylelint \"src/**/*.css\" ", "gulp:watch": "gulp watch", "gulp:build": "cross-env NODE_ENV=production gulp build", + "css:build": "postcss tailwind.all.css -o static/css/tailwind.build.css --verbose", + "css:watch": "npm run css:build -- --watch --env development", "cljs:watch": "clojure -M:cljs watch app publishing electron", "cljs:electron-watch": "clojure -M:cljs watch app electron", "cljs:release": "clojure -M:cljs release app publishing electron", diff --git a/postcss.config.js b/postcss.config.js index 3b6cea2ce91..103bcfc89ae 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,6 +1,8 @@ module.exports = (ctx) => ({ plugins: [ - require('postcss-nested'), - require('tailwindcss')('tailwind.config.js'), + require('postcss-nested')({}), + require('postcss-import-ext-glob')({}), + require('postcss-import')({}), + require('@tailwindcss/jit')('tailwind.config.js'), ], }) diff --git a/resources/css/style.css b/resources/css/style.css index fa93d060039..02897a4e81e 100644 --- a/resources/css/style.css +++ b/resources/css/style.css @@ -10,7 +10,6 @@ @import "./table.css"; @import "./datepicker.css"; @import "./highlight.css"; -@import "./tailwind.core.css"; /* Build by gulp. Check `_buildTailwind` for more detail */ @import "./tooltip.css"; @import "./common.css"; @import "./tailwind.build.css"; /* Build by gulp. Check `_buildTailwind` for more detail */ diff --git a/resources/css/style.dev.css b/resources/css/style.dev.css index ed1ac0566be..60253929534 100644 --- a/resources/css/style.dev.css +++ b/resources/css/style.dev.css @@ -11,5 +11,4 @@ @import "./datepicker.css"; @import "./highlight.css"; @import "./tooltip.css"; -@import "./tailwind.core.css"; /* Build by gulp. Check `_buildTailwind` for more detail */ @import "./common.css"; diff --git a/tailwind.all.css b/tailwind.all.css new file mode 100644 index 00000000000..8d79e6b08ff --- /dev/null +++ b/tailwind.all.css @@ -0,0 +1,5 @@ +@import "tailwindcss/base"; +@import "tailwindcss/components"; +@import "tailwindcss/utilities"; + +@import-glob "src/main/frontend/**/*.css"; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 67dc4c12d8f..6530b2e25c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -204,7 +204,7 @@ resolved "https://registry.yarnpkg.com/@excalidraw/excalidraw/-/excalidraw-0.4.2.tgz#2ba0f69f6e66c78e491733d8f8066c35578c2baf" integrity sha512-2vX/P9/p+gBvdUsqAbHSiV1yO2sLtG6fqvzWjlWYzRb6AkeNvpe2Wp7UfJOGb+VQmhymBE07be9ACzyA9ib2jw== -"@fullhuman/postcss-purgecss@^3.0.0": +"@fullhuman/postcss-purgecss@^3.1.3": version "3.1.3" resolved "https://registry.yarnpkg.com/@fullhuman/postcss-purgecss/-/postcss-purgecss-3.1.3.tgz#47af7b87c9bfb3de4bc94a38f875b928fffdf339" integrity sha512-kwOXw8fZ0Lt1QmeOOrd+o4Ibvp4UTEBFQbzvWldjlKv5n+G9sXfIPn1hh63IQIL8K8vbvv1oYMJiIUbuy9bGaA== @@ -273,6 +273,19 @@ mini-svg-data-uri "^1.0.3" traverse "^0.6.6" +"@tailwindcss/jit@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@tailwindcss/jit/-/jit-0.1.1.tgz#d3783b2941fda6d4521c5ce1b8b547e9fc9e130f" + integrity sha512-KXpWiRksgs+7voUeFHRDeRwo+EzY9PW/WLeFt8NHl2+hP551PoDC56QjXAjcgDgRniWQg6WoOwFsm6u2ajVWow== + dependencies: + chokidar "^3.5.1" + dlv "^1.1.3" + fast-glob "^3.2.5" + lodash.topath "^4.5.2" + object-hash "^2.1.1" + postcss-selector-parser "^6.0.4" + quick-lru "^5.1.1" + "@tailwindcss/typography@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.2.0.tgz#b597c83502e3c3c6641a8aaabda223cd494ab349" @@ -1294,6 +1307,11 @@ colorette@^1.2.1: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== +colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + commander@^6.0.0: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" @@ -1789,6 +1807,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + dom-helpers@^5.0.1: version "5.2.0" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.0.tgz#57fd054c5f8f34c52a3eeffdb7e7e93cd357d95b" @@ -2171,7 +2194,7 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1, fast-glob@^3.2.5: +fast-glob@^3.1.1, fast-glob@^3.2.4, fast-glob@^3.2.5: version "3.2.5" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== @@ -2188,6 +2211,11 @@ fast-levenshtein@^1.0.0: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz#e6a754cc8f15e58987aa9cbd27af66fd6f4e5af9" integrity sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk= +fast-sort@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/fast-sort/-/fast-sort-2.2.0.tgz#20903763531fbcbb41c9df5ab1bf5f2cefc8476a" + integrity sha512-W7zqnn2zsYoQA87FKmYtgOsbJohOrh7XrtZrCVHN5XZKqTBTv5UG+rSS3+iWbg/nepRQUOu+wnas8BwtK8kiCg== + fastdom@^1.0.9: version "1.0.10" resolved "https://registry.yarnpkg.com/fastdom/-/fastdom-1.0.10.tgz#4f2c7c9b24e7e249fc70c63131842b859b92bf09" @@ -3614,6 +3642,11 @@ lodash.toarray@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= +lodash.topath@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009" + integrity sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -4141,7 +4174,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-hash@^2.0.3: +object-hash@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.1.1.tgz#9447d0279b4fcf80cff3259bf66a1dc73afabe09" integrity sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ== @@ -4568,10 +4601,10 @@ postcss-calc@^7.0.1: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.2" -postcss-cli@8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-8.3.0.tgz#fa06c96cbd0620768c788cae74ba462622a9013c" - integrity sha512-GqWohD9VmH+LCe+xsv6VCdcgNylNBmsrbxJlyXUGteGGdcmazj2YxSiJMUmQpg8pE6LRox9idtsTB7JZq5a+rw== +postcss-cli@8.3.1: + version "8.3.1" + resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-8.3.1.tgz#865dad08300ac59ae9cecb7066780aa81c767a77" + integrity sha512-leHXsQRq89S3JC9zw/tKyiVV2jAhnfQe0J8VI4eQQbUjwIe0XxVqLrR+7UsahF1s9wi4GlqP6SJ8ydf44cgF2Q== dependencies: chalk "^4.0.0" chokidar "^3.3.0" @@ -4650,6 +4683,24 @@ postcss-html@^0.36.0: dependencies: htmlparser2 "^3.10.0" +postcss-import-ext-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-import-ext-glob/-/postcss-import-ext-glob-2.0.1.tgz#9e22f9fc9722f7e7206fde77d594e93f6c57163e" + integrity sha512-cCvzsZBPuhLCOAfkPeBnJ31uz5azlAjNb5Aug1f2nlomgZK+WD7Uwfrk+epFU9PI20rsMAineDUK4Ty+jEQHcg== + dependencies: + fast-glob "^3.2.4" + fast-sort "^2.2.0" + postcss-value-parser "^4.1.0" + +postcss-import@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.0.0.tgz#3ed1dadac5a16650bde3f4cdea6633b9c3c78296" + integrity sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + postcss-js@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-3.0.3.tgz#2f0bd370a2e8599d45439f6970403b5873abda33" @@ -4748,6 +4799,13 @@ postcss-minify-selectors@^4.0.2: postcss "^7.0.0" postcss-selector-parser "^3.0.0" +postcss-nested@5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.5.tgz#f0a107d33a9fab11d7637205f5321e27223e3603" + integrity sha512-GSRXYz5bccobpTzLQZXOnSOfKl6TwVr5CyAQJUPub4nuRJSOECK5AqurxVgmtxP48p0Kc/ndY/YyS1yqldX0Ew== + dependencies: + postcss-selector-parser "^6.0.4" + postcss-nested@^5.0.1: version "5.0.3" resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.3.tgz#2f46d77a06fc98d9c22344fd097396f5431386db" @@ -4952,26 +5010,17 @@ postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@7.0.32: - version "7.0.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" - integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== +postcss@8.2.8: + version "8.2.8" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.8.tgz#0b90f9382efda424c4f0f69a2ead6f6830d08ece" + integrity sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw== dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@8.2.1: - version "8.2.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.1.tgz#eabc5557c4558059b9d9e5b15bce7ffa9089c2a8" - integrity sha512-RhsqOOAQzTgh1UB/IZdca7F9WDb7SUCR2Vnv1x7DbvuuggQIpoDwjK+q0rzoPffhYvWNKX5JSwS4so4K3UC6vA== - dependencies: - colorette "^1.2.1" + colorette "^1.2.2" nanoid "^3.1.20" source-map "^0.6.1" @@ -5093,14 +5142,14 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -purgecss@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-3.0.0.tgz#039c191871bb999894222a00c4c8b179fccdb043" - integrity sha512-t3FGCwyX9XWV3ffvnAXTw6Y3Z9kNlcgm14VImNK66xKi5sdqxSA2I0SFYxtmZbAKuIZVckPdazw5iKL/oY/2TA== +purgecss@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-4.0.2.tgz#7281f233c08b4f41e1c5d85c66a2d064e6d7e1b3" + integrity sha512-6J1zOEAZJX6VbfcaJHgdQf4uPhxVXvHz7dGgWYXLOI9q7QFZ5feh8NZ2+G3ysii/Sr8OyUe5yhQ5Z/xZ5gIRnQ== dependencies: commander "^6.0.0" glob "^7.0.0" - postcss "7.0.32" + postcss "^8.2.1" postcss-selector-parser "^6.0.2" purgecss@^3.1.3: @@ -5133,6 +5182,11 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -5319,7 +5373,7 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -reduce-css-calc@^2.1.6: +reduce-css-calc@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz#7ef8761a28d614980dc0c982f772c93f7a99de03" integrity sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg== @@ -6147,30 +6201,30 @@ table@^6.0.7: slice-ansi "^4.0.0" string-width "^4.2.0" -tailwindcss@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-2.0.1.tgz#8d336917819341d1018208e8b3ed8cbc46e6b643" - integrity sha512-57G3jdcVBWTPkHCNSAfDAo1Qp2Nkr4H6WnLD0luNFh1td+KwQp9FOVcqj0SYBH6qwVQJawzT+0/zLxzKmyznGw== +tailwindcss@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-2.0.3.tgz#f8d07797d1f89dc4b171673c26237b58783c2c86" + integrity sha512-s8NEqdLBiVbbdL0a5XwTb8jKmIonOuI4RMENEcKLR61jw6SdKvBss7NWZzwCaD+ZIjlgmesv8tmrjXEp7C0eAQ== dependencies: - "@fullhuman/postcss-purgecss" "^3.0.0" + "@fullhuman/postcss-purgecss" "^3.1.3" bytes "^3.0.0" chalk "^4.1.0" color "^3.1.3" detective "^5.2.0" didyoumean "^1.2.1" - fs-extra "^9.0.1" + fs-extra "^9.1.0" html-tags "^3.1.0" lodash "^4.17.20" modern-normalize "^1.0.0" node-emoji "^1.8.1" - object-hash "^2.0.3" + object-hash "^2.1.1" postcss-functions "^3" postcss-js "^3.0.3" postcss-nested "^5.0.1" postcss-selector-parser "^6.0.4" postcss-value-parser "^4.1.0" pretty-hrtime "^1.0.3" - reduce-css-calc "^2.1.6" + reduce-css-calc "^2.1.8" resolve "^1.19.0" through2-filter@^3.0.0: