mirror of
https://github.com/tailwindlabs/tailwindcss.git
synced 2025-12-08 21:36:08 +00:00
Make dependencies of config watchable
This commit is contained in:
parent
db1bd5651b
commit
4a15678abb
@ -42,6 +42,7 @@
|
||||
"autoprefixer": "^9.4.5",
|
||||
"bytes": "^3.0.0",
|
||||
"chalk": "^2.4.1",
|
||||
"detective": "^5.2.0",
|
||||
"fs-extra": "^8.0.0",
|
||||
"lodash": "^4.17.11",
|
||||
"node-emoji": "^1.8.1",
|
||||
|
||||
@ -4,6 +4,7 @@ import fs from 'fs'
|
||||
import _ from 'lodash'
|
||||
import postcss from 'postcss'
|
||||
|
||||
import getModuleDependencies from './lib/getModuleDependencies'
|
||||
import registerConfigAsDependency from './lib/registerConfigAsDependency'
|
||||
import processTailwindFeatures from './processTailwindFeatures'
|
||||
import formatCSS from './lib/formatCSS'
|
||||
@ -49,7 +50,9 @@ const getConfigFunction = config => () => {
|
||||
}
|
||||
|
||||
if (!_.isObject(config)) {
|
||||
delete require.cache[require.resolve(config)]
|
||||
getModuleDependencies(config).forEach(mdl => {
|
||||
delete require.cache[require.resolve(mdl.file)]
|
||||
})
|
||||
}
|
||||
|
||||
return resolveConfig([
|
||||
|
||||
30
src/lib/getModuleDependencies.js
Normal file
30
src/lib/getModuleDependencies.js
Normal file
@ -0,0 +1,30 @@
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
import resolve from 'resolve'
|
||||
import detective from 'detective'
|
||||
|
||||
function createModule(file) {
|
||||
const source = fs.readFileSync(file, 'utf-8')
|
||||
const requires = detective(source)
|
||||
|
||||
return { file, requires }
|
||||
}
|
||||
|
||||
export default function getModuleDependencies(entryFile) {
|
||||
const rootModule = createModule(entryFile)
|
||||
const modules = [rootModule]
|
||||
|
||||
// Iterate over the modules, even when new
|
||||
// ones are being added
|
||||
for (const mdl of modules) {
|
||||
mdl.requires.forEach(dep => {
|
||||
const basedir = path.dirname(mdl.file)
|
||||
const depPath = resolve.sync(dep, { basedir })
|
||||
const depModule = createModule(depPath)
|
||||
|
||||
modules.push(depModule)
|
||||
})
|
||||
}
|
||||
|
||||
return modules
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
import fs from 'fs'
|
||||
import getModuleDependencies from './getModuleDependencies'
|
||||
|
||||
export default function(configFile) {
|
||||
if (!fs.existsSync(configFile)) {
|
||||
@ -6,10 +7,12 @@ export default function(configFile) {
|
||||
}
|
||||
|
||||
return function(css, opts) {
|
||||
opts.messages.push({
|
||||
type: 'dependency',
|
||||
file: configFile,
|
||||
parent: css.source.input.file,
|
||||
getModuleDependencies(configFile).forEach(mdl => {
|
||||
opts.messages.push({
|
||||
type: 'dependency',
|
||||
parent: css.source.input.file,
|
||||
file: mdl.file,
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
41
yarn.lock
41
yarn.lock
@ -914,6 +914,11 @@ abbrev@1:
|
||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
||||
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
||||
|
||||
acorn-dynamic-import@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
|
||||
integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==
|
||||
|
||||
acorn-globals@^4.1.0:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006"
|
||||
@ -927,7 +932,17 @@ acorn-jsx@^5.0.0:
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
|
||||
integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
|
||||
|
||||
acorn-walk@^6.0.1:
|
||||
acorn-node@^1.6.1:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.7.0.tgz#aac6a559d27af6176b076ab6fb13c5974c213e3b"
|
||||
integrity sha512-XhahLSsCB6X6CJbe+uNu3Mn9sJBNFxtBN9NLgAOQovfS6Kh0lDUtmlclhjn9CvEK7A7YyRU13PXlNcpSiLI9Yw==
|
||||
dependencies:
|
||||
acorn "^6.1.1"
|
||||
acorn-dynamic-import "^4.0.0"
|
||||
acorn-walk "^6.1.1"
|
||||
xtend "^4.0.1"
|
||||
|
||||
acorn-walk@^6.0.1, acorn-walk@^6.1.1:
|
||||
version "6.2.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
|
||||
integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
|
||||
@ -942,6 +957,11 @@ acorn@^6.0.1, acorn@^6.0.7:
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.0.tgz#67f0da2fc339d6cfb5d6fb244fd449f33cd8bbe3"
|
||||
integrity sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==
|
||||
|
||||
acorn@^6.1.1:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51"
|
||||
integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==
|
||||
|
||||
ajv@^6.10.0, ajv@^6.5.5, ajv@^6.9.1:
|
||||
version "6.10.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
|
||||
@ -1588,6 +1608,11 @@ define-property@^2.0.2:
|
||||
is-descriptor "^1.0.2"
|
||||
isobject "^3.0.1"
|
||||
|
||||
defined@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
|
||||
integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
|
||||
|
||||
delayed-stream@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||
@ -1608,6 +1633,15 @@ detect-newline@^2.1.0:
|
||||
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
||||
integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
|
||||
|
||||
detective@^5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b"
|
||||
integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==
|
||||
dependencies:
|
||||
acorn-node "^1.6.1"
|
||||
defined "^1.0.0"
|
||||
minimist "^1.1.1"
|
||||
|
||||
diff-sequences@^24.3.0:
|
||||
version "24.3.0"
|
||||
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975"
|
||||
@ -4963,6 +4997,11 @@ xml-name-validator@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
|
||||
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
|
||||
|
||||
xtend@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
||||
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
|
||||
|
||||
"y18n@^3.2.1 || ^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user