Home / Function/ rewriteUrls() — tailwindcss Function Reference

rewriteUrls() — tailwindcss Function Reference

Architecture documentation for the rewriteUrls() function in urls.ts from the tailwindcss codebase.

Function typescript NodeServer Resolver calls 5 called by 1

Entity Profile

Dependency Diagram

graph TD
  7ac5591b_df87_a0ae_2005_4d18e64a288f["rewriteUrls()"]
  95a806ab_8556_4112_9786_fda4ff23eeca["urls.ts"]
  7ac5591b_df87_a0ae_2005_4d18e64a288f -->|defined in| 95a806ab_8556_4112_9786_fda4ff23eeca
  4ceb6126_e004_1a29_2b41_a2a30ed1e0a3["createCompileOptions()"]
  4ceb6126_e004_1a29_2b41_a2a30ed1e0a3 -->|calls| 7ac5591b_df87_a0ae_2005_4d18e64a288f
  cb4616b6_75f7_97da_09a0_0f68da6d2d1a["url()"]
  7ac5591b_df87_a0ae_2005_4d18e64a288f -->|calls| cb4616b6_75f7_97da_09a0_0f68da6d2d1a
  9d7d664d_b6fd_88fd_8800_4b530c33a95b["parse()"]
  7ac5591b_df87_a0ae_2005_4d18e64a288f -->|calls| 9d7d664d_b6fd_88fd_8800_4b530c33a95b
  1814a389_cfe2_00cf_bd4d_7fa2fc24143c["normalizePath()"]
  7ac5591b_df87_a0ae_2005_4d18e64a288f -->|calls| 1814a389_cfe2_00cf_bd4d_7fa2fc24143c
  4982d9ce_98d4_85d9_44af_7cc47b93c482["walk()"]
  7ac5591b_df87_a0ae_2005_4d18e64a288f -->|calls| 4982d9ce_98d4_85d9_44af_7cc47b93c482
  9b49f3c6_0c8d_5c62_965c_30a1db6499f8["toCss()"]
  7ac5591b_df87_a0ae_2005_4d18e64a288f -->|calls| 9b49f3c6_0c8d_5c62_965c_30a1db6499f8
  style 7ac5591b_df87_a0ae_2005_4d18e64a288f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/@tailwindcss-node/src/urls.ts lines 37–93

export async function rewriteUrls({
  css,
  base,
  root,
}: {
  css: string
  base: string
  root: string
}) {
  if (!css.includes('url(') && !css.includes('image-set(')) {
    return css
  }

  let ast = parse(css)

  let promises: Promise<void>[] = []

  function replacerForDeclaration(url: string) {
    if (url[0] === '/') return url

    let absoluteUrl = path.posix.join(normalizePath(base), url)
    let relativeUrl = path.posix.relative(normalizePath(root), absoluteUrl)

    // If the path points to a file in the same directory, `path.relative` will
    // remove the leading `./` and we need to add it back in order to still
    // consider the path relative
    if (!relativeUrl.startsWith('.')) {
      relativeUrl = './' + relativeUrl
    }

    return relativeUrl
  }

  walk(ast, (node) => {
    if (node.kind !== 'declaration') return
    if (!node.value) return

    let isCssUrl = cssUrlRE.test(node.value)
    let isCssImageSet = cssImageSetRE.test(node.value)

    if (isCssUrl || isCssImageSet) {
      let rewriterToUse = isCssImageSet ? rewriteCssImageSet : rewriteCssUrls

      promises.push(
        rewriterToUse(node.value, replacerForDeclaration).then((url) => {
          node.value = url
        }),
      )
    }
  })

  if (promises.length) {
    await Promise.all(promises)
  }

  return toCss(ast)
}

Domain

Subdomains

Frequently Asked Questions

What does rewriteUrls() do?
rewriteUrls() is a function in the tailwindcss codebase, defined in packages/@tailwindcss-node/src/urls.ts.
Where is rewriteUrls() defined?
rewriteUrls() is defined in packages/@tailwindcss-node/src/urls.ts at line 37.
What does rewriteUrls() call?
rewriteUrls() calls 5 function(s): normalizePath, parse, toCss, url, walk.
What calls rewriteUrls()?
rewriteUrls() is called by 1 function(s): createCompileOptions.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free