DEV Community

Cover image for Using LESS in your Angular 9 Project
Ridwan Abiola
Ridwan Abiola

Posted on

Using LESS in your Angular 9 Project



ng new my-app


Enter fullscreen mode Exit fullscreen mode

Running the above angular cli command will give you a shiny brand new workspace and app. Chances are you may mistakenly or hastily select the defaults when prompted for information about features to include in the initial app.

It is all cool if you are a master CSS bender and manipulator but let's face it, down the road when your projects get larger you tend to get exhausted writing vanilla CSS (if that's a thing).

Re-introducing: CSS Preprocessors

CSS preprocessor takes the work out of writing your styles (well almost). It gives you features like variables, nesting, escaping, imports, mixins and so much more. Less is an example of this. It gives you a cleaner and efficient way of styling components.

Now: Putting LESS in Angular



ng config schematics.@schematics/angular:component.styleext less


Enter fullscreen mode Exit fullscreen mode

Running the above instructs Angular to use less as the default stylesheet format.



"schematics": {
    "@schematics/angular:component": {
      "style": "less"
    }
  }


Enter fullscreen mode Exit fullscreen mode

You should see the above changes to angular.json file.

Next: Changing all occurrences

VSCode has a neat feature to change all occurrences at once.

Alt Text

Here we go again



ERROR in ./src/app/app.component.ts
Module not found: Error: Can't resolve './app.component.less' in '/Users/tbo/my-app/src/app'
ERROR in ./src/app/dashboard/dashboard.component.ts
Module not found: Error: Can't resolve './dashboard.component.less' in '/Users/tbo/my-app/src/app/dashboard'
ERROR in ./src/app/home/home.component.ts
Module not found: Error: Can't resolve './home.component.less' in '/Users/tbo/my-app/src/app/home'
ERROR in ./src/app/landing/landing.component.ts
Module not found: Error: Can't resolve './landing.component.less' in '/Users/tbo/my-app/src/app/landing'
ERROR in ./src/app/profile/profile.component.ts
Module not found: Error: Can't resolve './profile.component.less' in '/Users/tbo/my-app/src/app/profile'


Enter fullscreen mode Exit fullscreen mode

Angular complains of not finding the module which makes sense since we changed all references but the file name remain unchanged.

This stack overflow answer shows you how to rename bunch of files extensions. Just so we are clear make sure you in the src folder when running the command. You can thank me later.

Finally

Since all that is out of the way. Now you can do:

This:



@width: 10px;
@height: @width + 10px;

#header {
  width: @width;
  height: @height;
}


Enter fullscreen mode Exit fullscreen mode

This:



.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}



#menu a {
  color: #111;
  .bordered();
}

.post a {
  color: red;
  .bordered();
}


Enter fullscreen mode Exit fullscreen mode

And that:



#header {
  color: black;
  .navigation {
    font-size: 12px;
  }
  .logo {
    width: 300px;
  }
}


Enter fullscreen mode Exit fullscreen mode

Ha! Exciting times to be a developer.

Top comments (0)