1 | <div align="center">
|
---|
2 | <a href="https://github.com/webpack/webpack">
|
---|
3 | <img width="200" height="200" src="https://webpack.js.org/assets/icon-square-big.svg">
|
---|
4 | </a>
|
---|
5 | </div>
|
---|
6 |
|
---|
7 | [![npm][npm]][npm-url]
|
---|
8 | [![node][node]][node-url]
|
---|
9 | [![deps][deps]][deps-url]
|
---|
10 | [![tests][tests]][tests-url]
|
---|
11 | [![cover][cover]][cover-url]
|
---|
12 | [![chat][chat]][chat-url]
|
---|
13 | [![size][size]][size-url]
|
---|
14 |
|
---|
15 | # less-loader
|
---|
16 |
|
---|
17 | A Less loader for webpack. Compiles Less to CSS.
|
---|
18 |
|
---|
19 | ## Getting Started
|
---|
20 |
|
---|
21 | To begin, you'll need to install `less` and `less-loader`:
|
---|
22 |
|
---|
23 | ```console
|
---|
24 | $ npm install less less-loader --save-dev
|
---|
25 | ```
|
---|
26 |
|
---|
27 | Then add the loader to your `webpack` config. For example:
|
---|
28 |
|
---|
29 | **webpack.config.js**
|
---|
30 |
|
---|
31 | ```js
|
---|
32 | module.exports = {
|
---|
33 | module: {
|
---|
34 | rules: [
|
---|
35 | {
|
---|
36 | test: /\.less$/i,
|
---|
37 | loader: [
|
---|
38 | // compiles Less to CSS
|
---|
39 | "style-loader",
|
---|
40 | "css-loader",
|
---|
41 | "less-loader",
|
---|
42 | ],
|
---|
43 | },
|
---|
44 | ],
|
---|
45 | },
|
---|
46 | };
|
---|
47 | ```
|
---|
48 |
|
---|
49 | And run `webpack` via your preferred method.
|
---|
50 |
|
---|
51 | ## Options
|
---|
52 |
|
---|
53 | | Name | Type | Default | Description |
|
---|
54 | | :---------------------------------------: | :------------------: | :----------------------: | :----------------------------------------------------- |
|
---|
55 | | **[`lessOptions`](#lessoptions)** | `{Object\|Function}` | `{ relativeUrls: true }` | Options for Less. |
|
---|
56 | | **[`additionalData`](#additionalData)** | `{String\|Function}` | `undefined` | Prepends/Appends `Less` code to the actual entry file. |
|
---|
57 | | **[`sourceMap`](#sourcemap)** | `{Boolean}` | `compiler.devtool` | Enables/Disables generation of source maps. |
|
---|
58 | | **[`webpackImporter`](#webpackimporter)** | `{Boolean}` | `true` | Enables/Disables the default Webpack importer. |
|
---|
59 | | **[`implementation`](#implementation)** | `{Object\|String}` | `less` | Setup Less implementation to use. |
|
---|
60 |
|
---|
61 | ### `lessOptions`
|
---|
62 |
|
---|
63 | Type: `Object|Function`
|
---|
64 | Default: `{ relativeUrls: true }`
|
---|
65 |
|
---|
66 | You can pass any Less specific options to the `less-loader` through the `lessOptions` property in the [loader options](https://webpack.js.org/configuration/module/#rule-options-rule-query). See the [Less documentation](http://lesscss.org/usage/#command-line-usage-options) for all available options in dash-case. Since we're passing these options to Less programmatically, you need to pass them in camelCase here:
|
---|
67 |
|
---|
68 | #### `Object`
|
---|
69 |
|
---|
70 | Use an object to pass options through to Less.
|
---|
71 |
|
---|
72 | **webpack.config.js**
|
---|
73 |
|
---|
74 | ```js
|
---|
75 | module.exports = {
|
---|
76 | module: {
|
---|
77 | rules: [
|
---|
78 | {
|
---|
79 | test: /\.less$/i,
|
---|
80 | use: [
|
---|
81 | {
|
---|
82 | loader: "style-loader",
|
---|
83 | },
|
---|
84 | {
|
---|
85 | loader: "css-loader",
|
---|
86 | },
|
---|
87 | {
|
---|
88 | loader: "less-loader",
|
---|
89 | options: {
|
---|
90 | lessOptions: {
|
---|
91 | strictMath: true,
|
---|
92 | },
|
---|
93 | },
|
---|
94 | },
|
---|
95 | ],
|
---|
96 | },
|
---|
97 | ],
|
---|
98 | },
|
---|
99 | };
|
---|
100 | ```
|
---|
101 |
|
---|
102 | #### `Function`
|
---|
103 |
|
---|
104 | Allows setting the options passed through to Less based off of the loader context.
|
---|
105 |
|
---|
106 | ```js
|
---|
107 | module.exports = {
|
---|
108 | module: {
|
---|
109 | rules: [
|
---|
110 | {
|
---|
111 | test: /\.less$/i,
|
---|
112 | use: [
|
---|
113 | "style-loader",
|
---|
114 | "css-loader",
|
---|
115 | {
|
---|
116 | loader: "less-loader",
|
---|
117 | options: {
|
---|
118 | lessOptions: (loaderContext) => {
|
---|
119 | // More information about available properties https://webpack.js.org/api/loaders/
|
---|
120 | const { resourcePath, rootContext } = loaderContext;
|
---|
121 | const relativePath = path.relative(rootContext, resourcePath);
|
---|
122 |
|
---|
123 | if (relativePath === "styles/foo.less") {
|
---|
124 | return {
|
---|
125 | paths: ["absolute/path/c", "absolute/path/d"],
|
---|
126 | };
|
---|
127 | }
|
---|
128 |
|
---|
129 | return {
|
---|
130 | paths: ["absolute/path/a", "absolute/path/b"],
|
---|
131 | };
|
---|
132 | },
|
---|
133 | },
|
---|
134 | },
|
---|
135 | ],
|
---|
136 | },
|
---|
137 | ],
|
---|
138 | },
|
---|
139 | };
|
---|
140 | ```
|
---|
141 |
|
---|
142 | ### `additionalData`
|
---|
143 |
|
---|
144 | Type: `String|Function`
|
---|
145 | Default: `undefined`
|
---|
146 |
|
---|
147 | Prepends `Less` code before the actual entry file.
|
---|
148 | In this case, the `less-loader` will not override the source but just **prepend** the entry's content.
|
---|
149 |
|
---|
150 | This is especially useful when some of your Less variables depend on the environment:
|
---|
151 |
|
---|
152 | > ℹ Since you're injecting code, this will break the source mappings in your entry file. Often there's a simpler solution than this, like multiple Less entry files.
|
---|
153 |
|
---|
154 | #### `String`
|
---|
155 |
|
---|
156 | ```js
|
---|
157 | module.exports = {
|
---|
158 | module: {
|
---|
159 | rules: [
|
---|
160 | {
|
---|
161 | test: /\.less$/i,
|
---|
162 | use: [
|
---|
163 | "style-loader",
|
---|
164 | "css-loader",
|
---|
165 | {
|
---|
166 | loader: "less-loader",
|
---|
167 | options: {
|
---|
168 | additionalData: `@env: ${process.env.NODE_ENV};`,
|
---|
169 | },
|
---|
170 | },
|
---|
171 | ],
|
---|
172 | },
|
---|
173 | ],
|
---|
174 | },
|
---|
175 | };
|
---|
176 | ```
|
---|
177 |
|
---|
178 | #### `Function`
|
---|
179 |
|
---|
180 | ##### Sync
|
---|
181 |
|
---|
182 | ```js
|
---|
183 | module.exports = {
|
---|
184 | module: {
|
---|
185 | rules: [
|
---|
186 | {
|
---|
187 | test: /\.less$/i,
|
---|
188 | use: [
|
---|
189 | "style-loader",
|
---|
190 | "css-loader",
|
---|
191 | {
|
---|
192 | loader: "less-loader",
|
---|
193 | options: {
|
---|
194 | additionalData: (content, loaderContext) => {
|
---|
195 | // More information about available properties https://webpack.js.org/api/loaders/
|
---|
196 | const { resourcePath, rootContext } = loaderContext;
|
---|
197 | const relativePath = path.relative(rootContext, resourcePath);
|
---|
198 |
|
---|
199 | if (relativePath === "styles/foo.less") {
|
---|
200 | return "@value: 100px;" + content;
|
---|
201 | }
|
---|
202 |
|
---|
203 | return "@value: 200px;" + content;
|
---|
204 | },
|
---|
205 | },
|
---|
206 | },
|
---|
207 | ],
|
---|
208 | },
|
---|
209 | ],
|
---|
210 | },
|
---|
211 | };
|
---|
212 | ```
|
---|
213 |
|
---|
214 | ##### Async
|
---|
215 |
|
---|
216 | ```js
|
---|
217 | module.exports = {
|
---|
218 | module: {
|
---|
219 | rules: [
|
---|
220 | {
|
---|
221 | test: /\.less$/i,
|
---|
222 | use: [
|
---|
223 | "style-loader",
|
---|
224 | "css-loader",
|
---|
225 | {
|
---|
226 | loader: "less-loader",
|
---|
227 | options: {
|
---|
228 | additionalData: async (content, loaderContext) => {
|
---|
229 | // More information about available properties https://webpack.js.org/api/loaders/
|
---|
230 | const { resourcePath, rootContext } = loaderContext;
|
---|
231 | const relativePath = path.relative(rootContext, resourcePath);
|
---|
232 |
|
---|
233 | if (relativePath === "styles/foo.less") {
|
---|
234 | return "@value: 100px;" + content;
|
---|
235 | }
|
---|
236 |
|
---|
237 | return "@value: 200px;" + content;
|
---|
238 | },
|
---|
239 | },
|
---|
240 | },
|
---|
241 | ],
|
---|
242 | },
|
---|
243 | ],
|
---|
244 | },
|
---|
245 | };
|
---|
246 | ```
|
---|
247 |
|
---|
248 | ### `sourceMap`
|
---|
249 |
|
---|
250 | Type: `Boolean`
|
---|
251 | Default: depends on the `compiler.devtool` value
|
---|
252 |
|
---|
253 | By default generation of source maps depends on the [`devtool`](https://webpack.js.org/configuration/devtool/) option. All values enable source map generation except `eval` and `false` value.
|
---|
254 |
|
---|
255 | **webpack.config.js**
|
---|
256 |
|
---|
257 | ```js
|
---|
258 | module.exports = {
|
---|
259 | module: {
|
---|
260 | rules: [
|
---|
261 | {
|
---|
262 | test: /\.less$/i,
|
---|
263 | use: [
|
---|
264 | "style-loader",
|
---|
265 | {
|
---|
266 | loader: "css-loader",
|
---|
267 | options: {
|
---|
268 | sourceMap: true,
|
---|
269 | },
|
---|
270 | },
|
---|
271 | {
|
---|
272 | loader: "less-loader",
|
---|
273 | options: {
|
---|
274 | sourceMap: true,
|
---|
275 | },
|
---|
276 | },
|
---|
277 | ],
|
---|
278 | },
|
---|
279 | ],
|
---|
280 | },
|
---|
281 | };
|
---|
282 | ```
|
---|
283 |
|
---|
284 | ### `webpackImporter`
|
---|
285 |
|
---|
286 | Type: `Boolean`
|
---|
287 | Default: `true`
|
---|
288 |
|
---|
289 | Enables/Disables the default `webpack` importer.
|
---|
290 |
|
---|
291 | This can improve performance in some cases. Use it with caution because aliases and `@import` at-rules starting with `~` will not work.
|
---|
292 |
|
---|
293 | **webpack.config.js**
|
---|
294 |
|
---|
295 | ```js
|
---|
296 | module.exports = {
|
---|
297 | module: {
|
---|
298 | rules: [
|
---|
299 | {
|
---|
300 | test: /\.less$/i,
|
---|
301 | use: [
|
---|
302 | "style-loader",
|
---|
303 | "css-loader",
|
---|
304 | {
|
---|
305 | loader: "less-loader",
|
---|
306 | options: {
|
---|
307 | webpackImporter: false,
|
---|
308 | },
|
---|
309 | },
|
---|
310 | ],
|
---|
311 | },
|
---|
312 | ],
|
---|
313 | },
|
---|
314 | };
|
---|
315 | ```
|
---|
316 |
|
---|
317 | ### `implementation`
|
---|
318 |
|
---|
319 | Type: `Object | String`
|
---|
320 |
|
---|
321 | > ⚠ less-loader compatible with Less 3 and 4 versions
|
---|
322 |
|
---|
323 | The special `implementation` option determines which implementation of Less to use. Overrides the locally installed `peerDependency` version of `less`.
|
---|
324 |
|
---|
325 | **This option is only really useful for downstream tooling authors to ease the Less 3-to-4 transition.**
|
---|
326 |
|
---|
327 | #### Object
|
---|
328 |
|
---|
329 | **webpack.config.js**
|
---|
330 |
|
---|
331 | ```js
|
---|
332 | module.exports = {
|
---|
333 | module: {
|
---|
334 | rules: [
|
---|
335 | {
|
---|
336 | test: /\.less$/i,
|
---|
337 | use: [
|
---|
338 | "style-loader",
|
---|
339 | "css-loader",
|
---|
340 | {
|
---|
341 | loader: "less-loader",
|
---|
342 | options: {
|
---|
343 | implementation: require("less"),
|
---|
344 | },
|
---|
345 | },
|
---|
346 | ],
|
---|
347 | },
|
---|
348 | ],
|
---|
349 | },
|
---|
350 | };
|
---|
351 | ```
|
---|
352 |
|
---|
353 | #### String
|
---|
354 |
|
---|
355 | **webpack.config.js**
|
---|
356 |
|
---|
357 | ```js
|
---|
358 | module.exports = {
|
---|
359 | module: {
|
---|
360 | rules: [
|
---|
361 | {
|
---|
362 | test: /\.less$/i,
|
---|
363 | use: [
|
---|
364 | "style-loader",
|
---|
365 | "css-loader",
|
---|
366 | {
|
---|
367 | loader: "less-loader",
|
---|
368 | options: {
|
---|
369 | implementation: require.resolve("less"),
|
---|
370 | },
|
---|
371 | },
|
---|
372 | ],
|
---|
373 | },
|
---|
374 | ],
|
---|
375 | },
|
---|
376 | };
|
---|
377 | ```
|
---|
378 |
|
---|
379 | ## Examples
|
---|
380 |
|
---|
381 | ### Normal usage
|
---|
382 |
|
---|
383 | Chain the `less-loader` with the [`css-loader`](https://github.com/webpack-contrib/css-loader) and the [`style-loader`](https://github.com/webpack-contrib/style-loader) to immediately apply all styles to the DOM.
|
---|
384 |
|
---|
385 | **webpack.config.js**
|
---|
386 |
|
---|
387 | ```js
|
---|
388 | module.exports = {
|
---|
389 | module: {
|
---|
390 | rules: [
|
---|
391 | {
|
---|
392 | test: /\.less$/i,
|
---|
393 | use: [
|
---|
394 | {
|
---|
395 | loader: "style-loader", // creates style nodes from JS strings
|
---|
396 | },
|
---|
397 | {
|
---|
398 | loader: "css-loader", // translates CSS into CommonJS
|
---|
399 | },
|
---|
400 | {
|
---|
401 | loader: "less-loader", // compiles Less to CSS
|
---|
402 | },
|
---|
403 | ],
|
---|
404 | },
|
---|
405 | ],
|
---|
406 | },
|
---|
407 | };
|
---|
408 | ```
|
---|
409 |
|
---|
410 | Unfortunately, Less doesn't map all options 1-by-1 to camelCase. When in doubt, [check their executable](https://github.com/less/less.js/blob/3.x/bin/lessc) and search for the dash-case option.
|
---|
411 |
|
---|
412 | ### Source maps
|
---|
413 |
|
---|
414 | To enable sourcemaps for CSS, you'll need to pass the `sourceMap` property in the loader's options. If this is not passed, the loader will respect the setting for webpack source maps, set in `devtool`.
|
---|
415 |
|
---|
416 | **webpack.config.js**
|
---|
417 |
|
---|
418 | ```js
|
---|
419 | module.exports = {
|
---|
420 | devtool: "source-map", // any "source-map"-like devtool is possible
|
---|
421 | module: {
|
---|
422 | rules: [
|
---|
423 | {
|
---|
424 | test: /\.less$/i,
|
---|
425 | use: [
|
---|
426 | "style-loader",
|
---|
427 | {
|
---|
428 | loader: "css-loader",
|
---|
429 | options: {
|
---|
430 | sourceMap: true,
|
---|
431 | },
|
---|
432 | },
|
---|
433 | {
|
---|
434 | loader: "less-loader",
|
---|
435 | options: {
|
---|
436 | sourceMap: true,
|
---|
437 | },
|
---|
438 | },
|
---|
439 | ],
|
---|
440 | },
|
---|
441 | ],
|
---|
442 | },
|
---|
443 | };
|
---|
444 | ```
|
---|
445 |
|
---|
446 | If you want to edit the original Less files inside Chrome, [there's a good blog post](https://medium.com/@toolmantim/getting-started-with-css-sourcemaps-and-in-browser-sass-editing-b4daab987fb0). The blog post is about Sass but it also works for Less.
|
---|
447 |
|
---|
448 | ### In production
|
---|
449 |
|
---|
450 | Usually, it's recommended to extract the style sheets into a dedicated file in production using the [MiniCssExtractPlugin](https://github.com/webpack-contrib/mini-css-extract-plugin). This way your styles are not dependent on JavaScript.
|
---|
451 |
|
---|
452 | ### Imports
|
---|
453 |
|
---|
454 | First we try to use built-in `less` resolve logic, then `webpack` resolve logic (aliases and `~`).
|
---|
455 |
|
---|
456 | #### Webpack Resolver
|
---|
457 |
|
---|
458 | `webpack` provides an [advanced mechanism to resolve files](https://webpack.js.org/configuration/resolve/).
|
---|
459 | `less-loader` applies a Less plugin that passes all queries to the webpack resolver if `less` could not resolve `@import`.
|
---|
460 | Thus you can import your Less modules from `node_modules`.
|
---|
461 |
|
---|
462 | ```css
|
---|
463 | @import "bootstrap/less/bootstrap";
|
---|
464 | ```
|
---|
465 |
|
---|
466 | Using `~` is deprecated and can be removed from your code (**we recommend it**), but we still support it for historical reasons.
|
---|
467 | Why you can removed it? The loader will first try to resolve `@import` as relative, if it cannot be resolved, the loader will try to resolve `@import` inside [`node_modules`](https://webpack.js.org/configuration/resolve/#resolve-modules).
|
---|
468 | Just prepend them with a `~` which tells webpack to look up the [`modules`](https://webpack.js.org/configuration/resolve/#resolve-modules).
|
---|
469 |
|
---|
470 | ```css
|
---|
471 | @import "~bootstrap/less/bootstrap";
|
---|
472 | ```
|
---|
473 |
|
---|
474 | Default resolver options can be modified by [`resolve.byDependency`](https://webpack.js.org/configuration/resolve/#resolvebydependency):
|
---|
475 |
|
---|
476 | **webpack.config.js**
|
---|
477 |
|
---|
478 | ```js
|
---|
479 | module.exports = {
|
---|
480 | devtool: "source-map", // any "source-map"-like devtool is possible
|
---|
481 | module: {
|
---|
482 | rules: [
|
---|
483 | {
|
---|
484 | test: /\.less$/i,
|
---|
485 | use: ["style-loader", "css-loader", "less-loader"],
|
---|
486 | },
|
---|
487 | ],
|
---|
488 | },
|
---|
489 | resolve: {
|
---|
490 | byDependency: {
|
---|
491 | // More options can be found here https://webpack.js.org/configuration/resolve/
|
---|
492 | less: {
|
---|
493 | mainFiles: ["custom"],
|
---|
494 | },
|
---|
495 | },
|
---|
496 | },
|
---|
497 | };
|
---|
498 | ```
|
---|
499 |
|
---|
500 | It's important to only prepend it with `~`, because `~/` resolves to the home-directory. webpack needs to distinguish between `bootstrap` and `~bootstrap`, because CSS and Less files have no special syntax for importing relative files. Writing `@import "file"` is the same as `@import "./file";`
|
---|
501 |
|
---|
502 | #### Less Resolver
|
---|
503 |
|
---|
504 | If you specify the `paths` option, modules will be searched in the given `paths`. This is `less` default behavior. `paths` should be an array with absolute paths:
|
---|
505 |
|
---|
506 | **webpack.config.js**
|
---|
507 |
|
---|
508 | ```js
|
---|
509 | module.exports = {
|
---|
510 | module: {
|
---|
511 | rules: [
|
---|
512 | {
|
---|
513 | test: /\.less$/i,
|
---|
514 | use: [
|
---|
515 | {
|
---|
516 | loader: "style-loader",
|
---|
517 | },
|
---|
518 | {
|
---|
519 | loader: "css-loader",
|
---|
520 | },
|
---|
521 | {
|
---|
522 | loader: "less-loader",
|
---|
523 | options: {
|
---|
524 | lessOptions: {
|
---|
525 | paths: [path.resolve(__dirname, "node_modules")],
|
---|
526 | },
|
---|
527 | },
|
---|
528 | },
|
---|
529 | ],
|
---|
530 | },
|
---|
531 | ],
|
---|
532 | },
|
---|
533 | };
|
---|
534 | ```
|
---|
535 |
|
---|
536 | ### Plugins
|
---|
537 |
|
---|
538 | In order to use [plugins](http://lesscss.org/usage/#plugins), simply set the `plugins` option like this:
|
---|
539 |
|
---|
540 | **webpack.config.js**
|
---|
541 |
|
---|
542 | ```js
|
---|
543 | const CleanCSSPlugin = require('less-plugin-clean-css');
|
---|
544 |
|
---|
545 | module.exports = {
|
---|
546 | ...
|
---|
547 | {
|
---|
548 | loader: 'less-loader',
|
---|
549 | options: {
|
---|
550 | lessOptions: {
|
---|
551 | plugins: [
|
---|
552 | new CleanCSSPlugin({ advanced: true }),
|
---|
553 | ],
|
---|
554 | },
|
---|
555 | },
|
---|
556 | },
|
---|
557 | ...
|
---|
558 | };
|
---|
559 | ```
|
---|
560 |
|
---|
561 | > ℹ️ Access to the [loader context](https://webpack.js.org/api/loaders/#the-loader-context) inside the custom plugin can be done using the `pluginManager.webpackLoaderContext` property.
|
---|
562 |
|
---|
563 | ```js
|
---|
564 | module.exports = {
|
---|
565 | install: function (less, pluginManager, functions) {
|
---|
566 | functions.add("pi", function () {
|
---|
567 | // Loader context is available in `pluginManager.webpackLoaderContext`
|
---|
568 |
|
---|
569 | return Math.PI;
|
---|
570 | });
|
---|
571 | },
|
---|
572 | };
|
---|
573 | ```
|
---|
574 |
|
---|
575 | ### Extracting style sheets
|
---|
576 |
|
---|
577 | Bundling CSS with webpack has some nice advantages like referencing images and fonts with hashed urls or [hot module replacement](https://webpack.js.org/concepts/hot-module-replacement/) in development. In production, on the other hand, it's not a good idea to apply your style sheets depending on JS execution. Rendering may be delayed or even a [FOUC](https://en.wikipedia.org/wiki/Flash_of_unstyled_content) might be visible. Thus it's often still better to have them as separate files in your final production build.
|
---|
578 |
|
---|
579 | There are two possibilities to extract a style sheet from the bundle:
|
---|
580 |
|
---|
581 | - [`extract-loader`](https://github.com/peerigon/extract-loader) (simpler, but specialized on the css-loader's output)
|
---|
582 | - [MiniCssExtractPlugin](https://github.com/webpack-contrib/mini-css-extract-plugin) (more complex, but works in all use-cases)
|
---|
583 |
|
---|
584 | ### CSS modules gotcha
|
---|
585 |
|
---|
586 | There is a known problem with Less and [CSS modules](https://github.com/css-modules/css-modules) regarding relative file paths in `url(...)` statements. [See this issue for an explanation](https://github.com/webpack-contrib/less-loader/issues/109#issuecomment-253797335).
|
---|
587 |
|
---|
588 | ## Contributing
|
---|
589 |
|
---|
590 | Please take a moment to read our contributing guidelines if you haven't yet done so.
|
---|
591 |
|
---|
592 | [CONTRIBUTING](./.github/CONTRIBUTING.md)
|
---|
593 |
|
---|
594 | ## License
|
---|
595 |
|
---|
596 | [MIT](./LICENSE)
|
---|
597 |
|
---|
598 | [npm]: https://img.shields.io/npm/v/less-loader.svg
|
---|
599 | [npm-url]: https://npmjs.com/package/less-loader
|
---|
600 | [node]: https://img.shields.io/node/v/less-loader.svg
|
---|
601 | [node-url]: https://nodejs.org
|
---|
602 | [deps]: https://david-dm.org/webpack-contrib/less-loader.svg
|
---|
603 | [deps-url]: https://david-dm.org/webpack-contrib/less-loader
|
---|
604 | [tests]: https://github.com/webpack-contrib/less-loader/workflows/less-loader/badge.svg
|
---|
605 | [tests-url]: https://github.com/webpack-contrib/less-loader/actions
|
---|
606 | [cover]: https://codecov.io/gh/webpack-contrib/less-loader/branch/master/graph/badge.svg
|
---|
607 | [cover-url]: https://codecov.io/gh/webpack-contrib/less-loader
|
---|
608 | [chat]: https://img.shields.io/badge/gitter-webpack%2Fwebpack-brightgreen.svg
|
---|
609 | [chat-url]: https://gitter.im/webpack/webpack
|
---|
610 | [size]: https://packagephobia.now.sh/badge?p=less-loader
|
---|
611 | [size-url]: https://packagephobia.now.sh/result?p=less-loader
|
---|