Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslnode 18–226 runs
build_error
glibcnode 18–226 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
default (loader)
✓ module.exports = { module: { rules: [ { test: /\.less$/i, use: [ 'style-loader', 'css-loader', 'less-loader' ] } ] } }
✗ const lessLoader = require('less-loader'); // Not a direct import; use as webpack loader in config
less-loader is used as a webpack loader, not imported directly in application code. It must be configured in webpack.config.js.
LessOptions
✓ import type { LessOptions } from 'less';
// Or: type LessOptions = import('less').options
✗ import { LessOptions } from 'less-loader'; // Not exported from less-loader
Type definitions for Less options come from the 'less' package, not less-loader.
LoaderContext
✓ import type { LoaderContext } from 'webpack';
// Or: type LoaderContext = import('webpack').LoaderContext
✗ import { LoaderContext } from 'less-loader'; // Not exported
Used for dynamic lessOptions function signature; imported from webpack.
Minimal webpack setup to compile a Less file to CSS using less-loader, style-loader, and css-loader.
// Install: npm install less less-loader style-loader css-loader --save-dev
// webpack.config.js
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /\.less$/i,
use: [
'style-loader', // Inject CSS into DOM
'css-loader', // Resolve CSS imports
'less-loader', // Compile Less to CSS
],
},
],
},
};
// src/style.less
@primary-color: #333;
body {
color: @primary-color;
}
// src/index.js
import './style.less';
console.log('Hello, world!');
Errors
Common errors & fixes
Module not found: Error: Can't resolve 'less'
Less is not installed or not in node_modules.
fixnpm install less --save-dev
ValidationError: Invalid options object. Less Loader has been initialized using an options object that does not match the API schema.
Options passed to less-loader are not valid (e.g., incorrect property name).
fixCheck options: valid properties are lessOptions, additionalData, sourceMap, webpackImporter, implementation, lessLogAsWarnOrErr.
Error: Cannot find module 'less-loader'
less-loader is not installed.
fixnpm install less less-loader --save-dev
TypeError: Cannot read properties of undefined (reading 'options')
Loader configuration may be incorrect; missing 'loader' property.
fixEnsure use array entries are objects with 'loader' and 'options' keys: { loader: 'less-loader', options: { ... } } Audit
Dependencies
lessrequiredPeer dependency: the actual Less compiler that less-loader invokes.
webpackrequiredPeer dependency: webpack 5 is required as the bundler.
@rspack/coreoptionalOptional peer dependency for Rspack compatibility.