Skip to main content
Version: 0.15

@farmfe/js-plugin-less

Support less for Farm.

Installation

npm install @farmfe/js-plugin-less less

Usage

import { UserConfig } from '@farmfe/core';
import farmJsPluginLess from '@farmfe/js-plugin-less';

const config: UserConfig = {
plugins: [
farmJsPluginLess({ /* options */ })
]
}

Options

export type LessPluginOptions = {
lessOptions?: Less.Options;
implementation?: string;
filters?: {
resolvedPaths?: string[];
moduleTypes?: string[];
};
additionalData?:
| string
| ((context?: string, resolvePath?: string) => string | Promise<string>);
};

lessOptions

Less options. See less options.

Example:

import path from 'node:path';
import { UserConfig } from '@farmfe/core';
import farmJsPluginLess from '@farmfe/js-plugin-less';

const config: UserConfig = {
plugins: [
farmJsPluginLess({
lessOptions: {
paths: [path.resolve(process.cwd(), 'styles')]
}
})
]
}

export default config;

filters

Which files should be processed by less. default to { resolvedPaths: ['\\.less$'] } for load and { moduleTypes: ['less'] } for transform.

  • resolvedPaths: Only files under these paths will be processed. Support regex.
  • moduleTypes: Only files with these module types will be processed.

resolvedPaths and moduleTypes are unioned, which means files match any of them will be processed.

Example:

import { UserConfig } from '@farmfe/core';
import farmJsPluginLess from '@farmfe/js-plugin-less';

const config: UserConfig = {
plugins: [
farmJsPluginLess({
filters: {
// all files end with .custom-css will be processed
resolvedPaths: ['\\.custom-less$'],
moduleTypes: ['less']
}
})
]
}

export default config;

implementation

implementation package name of less. Default to less.

additionalData

type AdditionalDataOption = string | ((content?: string, resolvePath?: string) => string | Promise<string>);

Additional data to be added to every less file. Example:

import { UserConfig } from '@farmfe/core';
import farmJsPluginLess from '@farmfe/js-plugin-less';

const config: UserConfig = {
plugins: [
farmJsPluginLess({
// add variables.less to every less file
additionalData: `
@import "./src/styles/variables.less";
`
})
]
}

For less file:

index.less
.foo {
color: @primary-color;
}

additionalData will be added to the top of the file:

index.less
@import "./src/styles/variables.less";

.foo {
color: @primary-color;
}

Function form:

import { UserConfig } from '@farmfe/core';
import farmJsPluginLess from '@farmfe/js-plugin-less';

const config: UserConfig = {
plugins: [
farmJsPluginLess({
// add variables.less to every less file
additionalData: (content, resolvePath) => {
if (resolvePath === '/path/to/index.less') {
return `
@import "./src/styles/variables.less";
`;
}
}
})
]
}
Extremely Fast Web Build Tool Written in Rust

Copyright © 2024 Farm Community. Built with Docusaurus.