A command that watches folders(and subfolders) for file changes and automatically compile the less css files into css. This is a file system watcher and compiler. It also keep track of a dependency tree and recompiles the parent if an imported (child) LESS file is changed.
Parts of this script is modified from Mikeal Rogers's watch script (https://github.com/mikeal/watch)
The commands below may need to be prefixed with
sudodepending upon your system
Install LESS and make sure the lessc binary is accessible to the script. Installing LESS with the -g(global) flag will make the binary accessible to your system.
yarn global add lessnpm install -g lessThe commands below may need to be prefixed with
sudodepending upon your system
Install the less-watch-compiler command globally.
yarn global add less-watch-compilernpm install -g less-watch-compilerYou need to pass in the minimum 2 parameters - <source_dir> and <destination_dir> . First parameter is the source folder to watch for changes and second is the output folder in which the css files will be compiled
Usage:
less-watch-compiler [options] <source_dir> <destination_dir>If you pass in the 3rd optional parameter, Any file change will trigger only to compile the main file specified in the 3rd parameter. Assuming the 3rd is "main.less"
Usage:
less-watch-compiler [options] <source_dir> <destination_dir> [main-file] root
└──src
│ └── main.less
│ └── aux.less
└──dist
└── main.css
The project can be compiled with the following command:
less-watch-compiler src dist main.lessBy default the the configuration file is loaded from ./less-watch-compiler.config.json but can also be specified by the --config option.
less-watch-compiler.config.json
{
"watchFolder": "src",
"outputFolder": "dist",
"mainFile": "main.less"
}The project can be compiled with the following command:
less-watch-compiler{
"watchFolder": "<input_folder>",
"outputFolder": "<output_folder>",
"mainFile": "<main-file>",
"includeHidden": false,
"sourceMap": false,
"plugins": "plugin1,plugin2",
"lessArgs": "option1=1,option2=2",
"runOnce": false,
"enableJs": true
}-h, --help output usage information
-V, --version output the version number
--main-file <file> Specify <file> as the file to always re-compile e.g. '--main-file style.less'.
--config <file> Custom configuration file path. (default: "less-watch-compiler.config.json")
--run-once Run the compiler once without waiting for additional changes.
--include-hidden Don't ignore files beginning with a '.' or a '_'
--enable-js Less.js Option: To enable inline JavaScript in less files.
--source-map Less.js Option: To generate source map for css files.
--plugins <plugin-a>,<plugin-b> Less.js Option: To specify plugins separated by commas.
--less-args <less-arg1>=<less-arg1-value>,<less-arg1>=<less-arg2-value> Less.js Option: To specify any other less options e.g. '--less-args math=strict,strict-units=on,include-path=./dir1\;./dir2'.
- By default, "minified" is turned on to always compress/minify output. You can set the minification to false by adding
"minified":falsein the config file. - By default, "sourceMap" is turned off. You can generating sourcemap to true by adding
"sourceMap":truein the config file. - By default, this script only compiles files with
.lessextension. More file extensions can be added by modifying theallowedExtensionsarray inconfig.json. - Files that start with underscores
_style.cssor period.style.cssare ignored. This behavior can be changed by adding"includeHidden:truein the config file. - When
--run-onceused, compilation will fail on first error
Alternativelly, you can checkout the code and run things locally like this:
node less-watch-compiler.js [options]To run unit tests: yarn test or npm test (see test/test.js).
This project exists thanks to all the people who contribute. [Contribute].