diff --git a/package.json b/package.json index 2b5746f..e234600 100755 --- a/package.json +++ b/package.json @@ -108,6 +108,7 @@ "pkg-up": "^3.1.0", "postcss": "^7.0.27", "postcss-selector-parser": "^6.0.2", + "resolve-from": "^5.0.0", "rimraf": "^3.0.2", "semver": "^7.3.2", "stack-trace": "0.0.10", diff --git a/src/class-names/getPlugins.js b/src/class-names/getPlugins.js index c4a520c..1fa3e50 100644 --- a/src/class-names/getPlugins.js +++ b/src/class-names/getPlugins.js @@ -2,12 +2,17 @@ import * as path from 'path' import stackTrace from 'stack-trace' import pkgUp from 'pkg-up' import { isObject } from './isObject' +import resolveFrom from 'resolve-from' import importFrom from 'import-from' export async function getBuiltInPlugins({ cwd, resolvedConfig }) { + const tailwindBase = path.dirname( + resolveFrom(cwd, 'tailwindcss/package.json') + ) + try { // TODO: add v0 support ("generators") - return importFrom(cwd, 'tailwindcss/lib/corePlugins.js').default({ + return importFrom(tailwindBase, './lib/corePlugins.js').default({ corePlugins: resolvedConfig.corePlugins, }) } catch (_) { diff --git a/src/class-names/index.js b/src/class-names/index.js index 62d478d..247dc48 100644 --- a/src/class-names/index.js +++ b/src/class-names/index.js @@ -2,6 +2,7 @@ import extractClassNames from './extractClassNames' import Hook from './hook' import dlv from 'dlv' import dset from 'dset' +import resolveFrom from 'resolve-from' import importFrom from 'import-from' import chokidar from 'chokidar' import semver from 'semver' @@ -55,13 +56,16 @@ export default async function getClassNames( invariant(configPath.length === 1, 'No Tailwind CSS config found.') configPath = configPath[0] const configDir = path.dirname(configPath) - postcss = importFrom(configDir, 'postcss') + const tailwindBase = path.dirname( + resolveFrom(configDir, 'tailwindcss/package.json') + ) + postcss = importFrom(tailwindBase, 'postcss') tailwindcss = importFrom(configDir, 'tailwindcss') version = importFrom(configDir, 'tailwindcss/package.json').version try { // this is not required - browserslistModule = importFrom(configDir, 'browserslist') + browserslistModule = importFrom(tailwindBase, 'browserslist') } catch (_) {} const sepLocation = semver.gte(version, '0.99.0') diff --git a/src/class-names/resolveConfig.js b/src/class-names/resolveConfig.js index ebd33ce..49a3154 100644 --- a/src/class-names/resolveConfig.js +++ b/src/class-names/resolveConfig.js @@ -1,9 +1,13 @@ +import resolveFrom from 'resolve-from' import importFrom from 'import-from' import * as path from 'path' import decache from './decache' export default function resolveConfig({ cwd, config }) { - let resolve = x => x + const tailwindBase = path.dirname( + resolveFrom(cwd, 'tailwindcss/package.json') + ) + let resolve = (x) => x if (typeof config === 'string') { if (!cwd) { @@ -14,18 +18,18 @@ export default function resolveConfig({ cwd, config }) { } try { - resolve = importFrom(cwd, 'tailwindcss/resolveConfig.js') + resolve = importFrom(tailwindBase, './resolveConfig.js') } catch (_) { try { const resolveConfig = importFrom( - cwd, - 'tailwindcss/lib/util/resolveConfig.js' + tailwindBase, + './lib/util/resolveConfig.js' ) const defaultConfig = importFrom( - cwd, - 'tailwindcss/stubs/defaultConfig.stub.js' + tailwindBase, + './stubs/defaultConfig.stub.js' ) - resolve = config => resolveConfig([config, defaultConfig]) + resolve = (config) => resolveConfig([config, defaultConfig]) } catch (_) {} }