{"id":13790049,"url":"https://github.com/iam-medvedev/esbuild-plugin-less","last_synced_at":"2025-11-16T17:04:43.213Z","repository":{"id":37792236,"uuid":"331217223","full_name":"iam-medvedev/esbuild-plugin-less","owner":"iam-medvedev","description":"esbuild plugin for less files","archived":false,"fork":false,"pushed_at":"2025-03-31T09:40:40.000Z","size":9515,"stargazers_count":43,"open_issues_count":5,"forks_count":13,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-03T15:02:42.806Z","etag":null,"topics":["esbuild","less","plugin"],"latest_commit_sha":null,"homepage":"https://npmjs.com/package/esbuild-plugin-less","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iam-medvedev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-20T06:44:02.000Z","updated_at":"2025-03-31T09:39:30.000Z","dependencies_parsed_at":"2023-11-22T18:29:46.431Z","dependency_job_id":"434da5d1-0acd-4dea-8d68-9d69277318a0","html_url":"https://github.com/iam-medvedev/esbuild-plugin-less","commit_stats":{"total_commits":111,"total_committers":10,"mean_commits":11.1,"dds":0.7207207207207207,"last_synced_commit":"a96aa89de912543cbab4ee9f660b9e424f14d261"},"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iam-medvedev%2Fesbuild-plugin-less","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iam-medvedev%2Fesbuild-plugin-less/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iam-medvedev%2Fesbuild-plugin-less/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iam-medvedev%2Fesbuild-plugin-less/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iam-medvedev","download_url":"https://codeload.github.com/iam-medvedev/esbuild-plugin-less/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247217183,"owners_count":20903009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esbuild","less","plugin"],"created_at":"2024-08-03T22:00:36.339Z","updated_at":"2025-11-16T17:04:43.186Z","avatar_url":"https://github.com/iam-medvedev.png","language":"TypeScript","funding_links":[],"categories":["Plugins"],"sub_categories":[],"readme":"# `esbuild-plugin-less`\n\n[![License: WTFPL](https://img.shields.io/badge/License-WTFPL-brightgreen.svg)](http://www.wtfpl.net/about/)\n[![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-f8bc45.svg)](https://github.com/prettier/prettier)\n[![npm version](https://badge.fury.io/js/esbuild-plugin-less.svg)](https://www.npmjs.com/package/esbuild-plugin-less)\n[![npm downloads](https://img.shields.io/npm/dt/esbuild-plugin-less.svg)](https://www.npmjs.com/package/esbuild-plugin-less)\n[![libraries.io](https://img.shields.io/librariesio/release/npm/esbuild-plugin-less)](https://libraries.io/github/iam-medvedev/esbuild-plugin-less)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fiam-medvedev%2Fesbuild-plugin-less.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fiam-medvedev%2Fesbuild-plugin-less?ref=badge_shield)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n\n[esbuild](https://github.com/evanw/esbuild) plugin for [LESS](https://lesscss.org/) files.\n\nSupports all LESS features, including [imports](https://lesscss.org/#importing), [variables](https://lesscss.org/#variables), [mixins](https://lesscss.org/#mixins), and more.\n\n## Features\n\n- 💫 Support for all LESS.js features and options\n- 🎨 CSS Modules support with `.module.less` files\n- 🔄 Watch mode support with automatic rebuilds\n- 🎯 Custom file filtering options\n- 📝 Written in TypeScript\n\n## Installation\n\n```sh\n# Using bun\n$ bun add -D esbuild-plugin-less\n\n# Using yarn\n$ yarn add -D esbuild-plugin-less\n\n# Using pnpm\n$ pnpm add -D esbuild-plugin-less\n\n# Using npm\n$ npm install --save-dev esbuild-plugin-less\n```\n\n## Basic Usage\n\n```ts\nimport { build } from 'esbuild';\nimport { lessLoader } from 'esbuild-plugin-less';\n\nbuild({\n  entryPoints: ['src/index.ts'],\n  bundle: true,\n  outdir: 'dist',\n  plugins: [lessLoader()], // That's it!\n  loader: {\n    '.ts': 'ts',\n  },\n});\n```\n\n## Advanced Configuration\n\n### With LESS Options\n\n```ts\nimport { build } from 'esbuild';\nimport { lessLoader } from 'esbuild-plugin-less';\n\nbuild({\n  entryPoints: ['src/index.ts'],\n  bundle: true,\n  outdir: 'dist',\n  plugins: [\n    lessLoader({\n      // LESS.js options\n      math: 'always',\n      globalVars: {\n        primaryColor: '#ff0000',\n      },\n      paths: ['./src/styles'],\n      javascriptEnabled: true,\n    }),\n  ],\n});\n```\n\n### With Loader Options\n\n```ts\nimport { build } from 'esbuild';\nimport { lessLoader } from 'esbuild-plugin-less';\n\nbuild({\n  entryPoints: ['src/index.ts'],\n  bundle: true,\n  outdir: 'dist',\n  plugins: [\n    lessLoader(\n      {}, // LESS options (empty in this example)\n      {\n        // Loader options\n        filter: /\\._?less$/, // Custom file filter\n        inline: false, // Control if LESS files should be inlined as strings\n      },\n    ),\n  ],\n});\n```\n\n## CSS Modules Support\n\nThe plugin automatically handles `.module.less` files as CSS Modules. This enables local scoping of styles and generates unique class names.\n\n```less\n// styles.module.less\n.button {\n  color: blue;\n}\n```\n\n```ts\n// Component.ts\nimport styles from './styles.module.less';\nelement.className = styles.button; // Will use the generated unique class name\n```\n\n## Configuration Options\n\n### LESS Options\n\nThe plugin accepts all valid options from LESS.js. Here are some commonly used options:\n\nFor a complete list of LESS options, see the [LESS documentation](http://lesscss.org/usage/#less-options).\n\n### Loader Options\n\n| Option   | Type      | Default     | Description                                |\n| -------- | --------- | ----------- | ------------------------------------------ |\n| `filter` | `RegExp`  | `/\\.less$/` | Custom filter for processing files         |\n| `inline` | `boolean` | `false`     | Import LESS files as strings in TypeScript |\n\n## License\n\n`esbuild-plugin-less` is [WTFPL licensed](./LICENSE).\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fiam-medvedev%2Fesbuild-plugin-less.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fiam-medvedev%2Fesbuild-plugin-less?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiam-medvedev%2Fesbuild-plugin-less","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiam-medvedev%2Fesbuild-plugin-less","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiam-medvedev%2Fesbuild-plugin-less/lists"}