Bob
Bob

Reputation: 619

How do you add app wide CSS files using the Angular CLI?

I want to add some shard styling to my Angular 2 app, things like fonts and color schemes that will be used every where. In the past I have always done this by adding a tag like this to my index page:

<link rel="stylesheet" href="css/framework.css" />

This doesn't work with whatever the CLI is using to serve the app. I tried manually adding the css files to the dist folder after building, but that doesn't seem to work either.

I also tried adding the css in the anugular-cli-build.js folder like this

module.exports = function(defaults) {
  return new Angular2App(defaults, {
    vendorNpmFiles: [
      'css/*.css'
    ]
  });
};

It still doesn't seem to build the files in the css folder out when I tell it to build.

The style sheet in question is meant to be the base line styles for the entire app and not something I want to have to include in the styleUrl tag.

Upvotes: 5

Views: 15316

Answers (3)

Senthil
Senthil

Reputation: 1609

In the latest ng cli just adding required styles and scripts like below in ".angular-cli.json" will expose it in bundle automatically

"apps":{
 "styles": [
        "../node_modules/ng2f-bootstrap/dist/bootstrap.min.css",
        "styles.css"
      ],
  "scripts": [
        "../node_modules/jquery/dist/jquery.min.js",
        "../node_modules/bootstrap/dist/js/bootstrap.js"
      ],
}

Upvotes: 14

Brocco
Brocco

Reputation: 65043

Since the files you're referring to (i.e. [framework-x].css) are static you can utilize the public directory to copy files directly to the dist folder without any additional configuration.

based upon your inclusion of:

src
|-- public
|   |-- framework-x.css

your file will be moved to the dist directory like this:

dist
|-- framework-x.css

So you can reference it in index.html directly.

Upvotes: 3

awiseman
awiseman

Reputation: 5724

the vendorNpmFiles configuration is for telling the cli build which node_modules to copy into the dist directory.

I was able to just create a 'resources' directory in my src directory, put my app-wide css file in there, and it was copied over to the dist build without any further configuration.

src
|- app
|  |
|
|- css
|  |
|  |- framework.css
|
|- index.html

If you're trying to include a framework like bootstrap, then yeah, you can use the vendorNpmFiles configuration to copy it from your node_modules:

module.exports = function(defaults) {
  return new Angular2App(defaults, {
    vendorNpmFiles: [
      'bootstrap/dist/**/*',
      ...
    ]
  }
}

Then your reference in your index.html would be:

<link rel="stylesheet" type="text/css" href="vendor/bootstrap/dist/css/bootstrap.min.css"> <script src="vendor/bootstrap/dist/js/bootstrap.js"></script>

Upvotes: 6

Related Questions