Home / File/ lightningcss-plugins.js — vite Source File

lightningcss-plugins.js — vite Source File

Architecture documentation for lightningcss-plugins.js, a javascript file in the vite codebase. 4 imports, 1 dependents.

File javascript ViteCore BuildPipeline 4 imports 1 dependents 5 functions

Entity Profile

Dependency Diagram

graph LR
  c618defc_3b57_317d_60a6_8c85cb7f6060["lightningcss-plugins.js"]
  51e96894_3556_ed5c_1ede_97d449867adf["node:path"]
  c618defc_3b57_317d_60a6_8c85cb7f6060 --> 51e96894_3556_ed5c_1ede_97d449867adf
  54c37fea_4fe7_2693_71cb_1276b77f55f9["vite"]
  c618defc_3b57_317d_60a6_8c85cb7f6060 --> 54c37fea_4fe7_2693_71cb_1276b77f55f9
  c688d896_f72c_d58c_87d1_55a366a1326a["lightningcss"]
  c618defc_3b57_317d_60a6_8c85cb7f6060 --> c688d896_f72c_d58c_87d1_55a366a1326a
  f768205a_533a_2be3_ec95_10f7f47d71ce["tinyglobby"]
  c618defc_3b57_317d_60a6_8c85cb7f6060 --> f768205a_533a_2be3_ec95_10f7f47d71ce
  5c81aa76_dd42_9d68_2485_64577867dfb7["vite.config-lightningcss.js"]
  5c81aa76_dd42_9d68_2485_64577867dfb7 --> c618defc_3b57_317d_60a6_8c85cb7f6060
  style c618defc_3b57_317d_60a6_8c85cb7f6060 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import path from 'node:path'
import { normalizePath } from 'vite'
import { bundle as bundleWithLightningCss } from 'lightningcss'
import { globSync } from 'tinyglobby'

/**
 * @param {string} filename
 * @returns {import('lightningcss').StyleSheet}
 *
 * based on https://github.com/sardinedev/lightningcss-plugins/blob/9fb379486e402a4b4b8950d09e655b4cbf8a118b/packages/global-custom-queries/src/globalCustomQueries.ts#L9-L29
 * https://github.com/sardinedev/lightningcss-plugins/blob/main/LICENSE
 */
function obtainLightningCssAst(filename) {
  let ast
  try {
    bundleWithLightningCss({
      filename,
      visitor: {
        StyleSheet(stylesheet) {
          ast = stylesheet
        },
      },
    })
    return ast
  } catch (error) {
    throw Error(`failed to obtain lightning css AST`, { cause: error })
  }
}

/** @returns {import('lightningcss').Visitor} */
export function testDirDep() {
  /** @type {string[]} */
  let currentStyleSheetSources
  return {
    StyleSheet(stylesheet) {
      currentStyleSheetSources = stylesheet.sources
    },
    Rule: {
      unknown: {
        test(rule) {
          const location = rule.loc
          const from = currentStyleSheetSources[location.source_index]
          const pattern = normalizePath(
            path.resolve(path.dirname(from), './glob-dep/**/*.css'),
          )
          // FIXME: there's no way to add a dependency
          const files = globSync(pattern, {
            expandDirectories: false,
            absolute: true,
          })
          return files.flatMap((file) => obtainLightningCssAst(file).rules)
        },
      },
    },
  }
}

/** @returns {import('lightningcss').Visitor} */
export function testSourceInput() {
  /** @type {string[]} */
// ... (151 more lines)

Domain

Subdomains

Dependencies

  • lightningcss
  • node:path
  • tinyglobby
  • vite

Frequently Asked Questions

What does lightningcss-plugins.js do?
lightningcss-plugins.js is a source file in the vite codebase, written in javascript. It belongs to the ViteCore domain, BuildPipeline subdomain.
What functions are defined in lightningcss-plugins.js?
lightningcss-plugins.js defines 5 function(s): nestedLikePlugin, obtainLightningCssAst, testDirDep, testInjectUrl, testSourceInput.
What does lightningcss-plugins.js depend on?
lightningcss-plugins.js imports 4 module(s): lightningcss, node:path, tinyglobby, vite.
What files import lightningcss-plugins.js?
lightningcss-plugins.js is imported by 1 file(s): vite.config-lightningcss.js.
Where is lightningcss-plugins.js in the architecture?
lightningcss-plugins.js is located at playground/css/lightningcss-plugins.js (domain: ViteCore, subdomain: BuildPipeline, directory: playground/css).

Analyze Your Own Codebase

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

Try Supermodel Free