Compile LESS files with source maps
Asked Answered
S

3

16

How can I compile a LESS file to output a source map file (.css.map) in addition to a CSS file? Is there a way to do it on both command line (NodeJS's lessc) and on any GUI-based programs?

Stepaniestepbrother answered 7/1, 2014 at 19:7 Comment(1)
lessc options. E.g.: --source-map=mystyles.css.mapMarisolmarissa
S
23

Update: New shortest answer

The docs have been updated! As new features hit LESS, sometimes the docs lag behind a bit, so if you're looking for bleeding-edge features, you're still probably better off running lessc (see longer answer) and checking what pops out of the help text.

http://lesscss.org/usage/

Short answer

You're looking for any number of the following options from the command line:

--source-map[=FILENAME]  Outputs a v3 sourcemap to the filename (or output filename.map)
--source-map-rootpath=X  adds this path onto the sourcemap filename and less file paths
--source-map-basepath=X  Sets sourcemap base path, defaults to current working directory.
--source-map-less-inline puts the less files into the map instead of referencing them
--source-map-map-inline  puts the map (and any less files) into the output css file
--source-map-url=URL     the complete url and filename put in the less file

As I write this I'm not aware of any GUI options that generate maps (source maps were only added to LESS in the last few months) -- sorry to not have any better news. I'm sure they'll add support in as they update over the next year.

Longer answer

If you run lessc from the command line without any parameters it will give you all the options. (In my experience, this is more up to date than their documentation, so it'll at least get you pointed in the right direction.) with all the most recent map stuff included.

The easiest combo to use for dev is --source-map-less-inline --source-map-map-inline as that will give you your source maps embedded in your output css.

If you'd like to add a separate map file, you can use --source-map which, from my.less will output my.css and my.css.map

For reference: when I run my copy (v 1.6.1 at the moment) I get

usage: lessc [option option=parameter ...] <source> [destination]

If source is set to `-' (dash or hyphen-minus), input is read from stdin.
options:
  -h, --help               Print help (this message) and exit.
  --include-path=PATHS     Set include paths. Separated by `:'. Use `;' on Windows.
  -M, --depends            Output a makefile import dependency list to stdout
  --no-color               Disable colorized output.
  --no-ie-compat           Disable IE compatibility checks.
  --no-js                  Disable JavaScript in less files
  -l, --lint               Syntax check only (lint).
  -s, --silent             Suppress output of error messages.
  --strict-imports         Force evaluation of imports.
  --insecure               Allow imports from insecure https hosts.
  -v, --version            Print version number and exit.
  -x, --compress           Compress output by removing some whitespaces.
  --clean-css              Compress output using clean-css
  --clean-option=opt:val   Pass an option to clean css, using CLI arguments from
                           https://github.com/GoalSmashers/clean-css e.g.
                           --clean-option=--selectors-merge-mode:ie8
                           and to switch on advanced use --clean-option=--advanced
  --source-map[=FILENAME]  Outputs a v3 sourcemap to the filename (or output filename.map)
  --source-map-rootpath=X  adds this path onto the sourcemap filename and less file paths
  --source-map-basepath=X  Sets sourcemap base path, defaults to current working directory.
  --source-map-less-inline puts the less files into the map instead of referencing them
  --source-map-map-inline  puts the map (and any less files) into the output css file
  --source-map-url=URL     the complete url and filename put in the less file
  -rp, --rootpath=URL      Set rootpath for url rewriting in relative imports and urls.
                           Works with or without the relative-urls option.
  -ru, --relative-urls     re-write relative urls to the base less file.
  -sm=on|off               Turn on or off strict math, where in strict mode, math
  --strict-math=on|off     requires brackets. This option may default to on and then
                           be removed in the future.
  -su=on|off               Allow mixed units, e.g. 1px+1em or 1px*1px which have units
  --strict-units=on|off    that cannot be represented.
  --global-var='VAR=VALUE' Defines a variable that can be referenced by the file.
  --modify-var='VAR=VALUE' Modifies a variable already declared in the file.

-------------------------- Deprecated ----------------
  -O0, -O1, -O2            Set the parser's optimization level. The lower
                           the number, the less nodes it will create in the
                           tree. This could matter for debugging, or if you
                           want to access the individual nodes in the tree.
  --line-numbers=TYPE      Outputs filename and line numbers.
                           TYPE can be either 'comments', which will output
                           the debug info within comments, 'mediaquery'
                           that will output the information within a fake
                           media query which is compatible with the SASS
                           format, and 'all' which will do both.
  --verbose                Be verbose.
Strophanthin answered 30/1, 2014 at 17:11 Comment(3)
can u please provide the documentation link. i couldnt find one with all these options.Outclass
@Outclass The docs were recently updated, so the answer now has a link to them.Strophanthin
if some holy man decided to add some examples to this damn thing.. I managed to do this with SASS with 1 minute reading of the docs, it's been a week I am trying to get this with LESS. The filename in my map file is "undefined". Why isn't the source map option on by default , outputting the same filename in the same location? Why do you hate developers? Why do you make our lives more difficult? thanksBurg
C
7

If the command line doesn't suite you, Grunt is great at this type of thing. You can configure the grunt-contrib-less plugin to generate inline maps with a config like this:

 less: {
        options: {
            sourceMap:true,
            outputSourceFiles: true
        },
        lessFiles: {
            expand: true,
            flatten:false,
            src: ['**/*.less'],
            dest: ['dist/'],
            ext: '.css',
        }
    },

https://github.com/gruntjs/grunt-contrib-less

Corsica answered 8/9, 2014 at 20:19 Comment(0)
L
0

Example to Create Map and CSS file from Less File

  1. Install latest Node JS and go to command prompt and run npm install less, Now less installed successfully
  2. Go to Command Prompt and move to less file folder that we are going to create

For e.g., I am going to change HelloWorld [Less File]

In Command prompt go to C:\Project\CSS or give the correct path in the below command.

Run following Command in Command Prompt

lessc HelloWorld.less HelloWorld.css --source-map=HelloWorld.css.map –verbose

Now CSS and Map file is generated in the respective folder.

For more reference check the link : royalarun.blogspot.com

Lailalain answered 28/4, 2018 at 13:44 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.