Skip to content

jaywcjlove/rollup-plugin-less

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rollup Plugin Less

GitHub Actions Test

A rollup plugin for less files.

Install

npm install @wcj/rollup-plugin-less --save

Usage

import './test.less';
// Generate css will be auto insert to the head tag if you set insert be true
import { rollup } from 'rollup';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import less from '@wcj/rollup-plugin-less';

rollup({
  input: 'src/main.js',
  output: [
    { name: 'Test', file: 'dist/test.cjs.js', format: 'cjs' },
    { name: 'Test', file: 'dist/test.esm.js', format: 'esm' },
    { name: 'Test', file: 'dist/test.js', format: 'umd' },
    { name: 'Test', file: 'dist/test.min.js', format: 'umd' },
  ],
  plugins: [
    less({
      // PluginLessOptions: options....
    }),
    resolve(),
    commonjs(),
  ],
});

Options

interface PluginLessOptions extends Less.Options {
  /**
   * Type: `String` | `RegExp` | `Array[...String|RegExp]`
   * A valid [minimatch](https://www.npmjs.com/package/minimatch) pattern, or array of patterns.
   * If options.include is omitted or has zero length, filter will return true by default.
   * Otherwise, an ID must match one or more of the minimatch patterns,
   * and must not match any of the options.exclude patterns.
   * > https://github.com/rollup/plugins/tree/master/packages/pluginutils#include-and-exclude
   */
  include?: FilterPattern,
  /**
   * Type: `String` | `RegExp` | `Array[...String|RegExp]`
   * A valid [minimatch](https://www.npmjs.com/package/minimatch) pattern, or array of patterns.
   * If options.include is omitted or has zero length, filter will return true by default.
   * Otherwise, an ID must match one or more of the minimatch patterns,
   * and must not match any of the options.exclude patterns.
   * > https://github.com/rollup/plugins/tree/master/packages/pluginutils#include-and-exclude
   */
  exclude?: FilterPattern,
  /**
   * https://github.com/rollup/plugins/tree/master/packages/pluginutils#options
   */
  options?: { resolve?: string | false | null },
  /**
   * If you specify a string, it will be the path to write the generated CSS.
   * If you specify a function, call it passing the generated CSS as an argument.
   */
  output?: string | ((code: string, id:string) => string | Promise<string>);
  /**
   * Add a banner to the string.
   */
  banner?: string;
}

Set Less.Options in @types/less

declare namespace Less {
  interface Options {
    sourceMap?: SourceMapOption;
    /** Filename of the main file to be passed to less.render() */
    filename?: string;
    /** The locations for less looking for files in @import rules */
    paths?: string[];
    /** True, if run the less parser and just reports errors without any output. */
    lint?: boolean;
    /** Pre-load global Less.js plugins */
    plugins?: Plugin[];
    /** @deprecated If true, compress using less built-in compression. */
    compress?: boolean;
    strictImports?: boolean;
    /** If true, allow imports from insecure https hosts. */
    insecure?: boolean;
    depends?: boolean;
    maxLineLen?: number;
    /** @deprecated If false, No color in compiling. */
    color?: boolean;
    /** @deprecated False by default. */
    ieCompat?: boolean;
    /** @deprecated If true, enable evaluation of JavaScript inline in `.less` files. */
    javascriptEnabled?: boolean;
    /** Whether output file information and line numbers in compiled CSS code. */
    dumpLineNumbers?: "comment" | string;
    /** Add a path to every generated import and url in output css files. */
    rootpath?: string;
    /** Math mode options for avoiding symbol conficts on math expressions. */
    math?: 'always' | 'strict' | 'parens-division' | 'parens' | 'strict-legacy' | number;
    /** If true, stops any warnings from being shown. */
    silent?: boolean;
    /** Without this option, Less attempts to guess at the output unit when it does maths. */
    strictUnits?: boolean;
    /** Defines a variable that can be referenced by the file. */
    globalVars?: {
      [key: string] : string,
    };
    /** Puts Var declaration at the end of base file. */
    modifyVars?: {
      [key: string] : string,
    };
    /** Read files synchronously in Node.js */
    syncImport?: boolean;
  }
}

Development

npm run watch # Listen compile .ts files.
npm run build # compile .ts files.

npm run test

License

MIT © Kenny Wong