Angular 2:如何正确自动导入normalize.css

Gar*_*550 22 css typescript normalize-css angular

我是一个新的Angular 2用户,我遇到了一些问题.

传统上,我们可以使用<link rel="stylesheet" href="node_modules/normalize.css/normalize.css" />导入css文件,但我想让Angular 2自动导入它import.

当我使用Material 2时,我尝试使用相同的方法:

// angular-cli-build.js

module.exports = function(defaults) {
  return new Angular2App(defaults, {
    vendorNpmFiles: [
      'normalize-path/index.js',
    ]
  });
};
Run Code Online (Sandbox Code Playgroud)

// system-config.ts 

const map: any = {
  'normalize': 'vendor/normalize-path',
};

/** User packages configuration. */
const packages: any = {
  'normalize': {main: 'index.js'},
};
Run Code Online (Sandbox Code Playgroud)

// app.component.ts

import { normalize } from 'normalize-path';
Run Code Online (Sandbox Code Playgroud)

编辑会抱怨:

找不到模块'normalize-path'.

代码将无法编译.但我真的不知道出了什么问题.

小智 35

使用1.0.0-beta.15angular-in版本的angular-cli,解决方案非常简单:

  1. npm i normalize.css
  2. 添加"../node_modules/normalize.css/normalize.css"apps[0].styles在配置文件angular-cli.json

注意:如果使用Angular 7,配置文件现在是angular.json,而normalise.css的路径apps[0].styles应该是"../node_modules/normalize.css/normalize.css".

例:

npm install --save normalize.css
Run Code Online (Sandbox Code Playgroud)

  • 现在有一种更好的加载方法.在styles.css(或styles.scss,如果你使用sass)中添加`@import'~normalize.css';`执行`npm install --save normalize.css`之后.`~`表示导入为节点模块.'normalize'模块的package.json指向正确的.css文件.我用Angular v5,最新的CLI测试了这个,用`ng serve --prod`和`--aot` (11认同)
  • 请注意,需要重新启动cli才能使其生效 (6认同)

elp*_*dev 34

基于这个答案,所有需要做的是:

npm install --save normalize.css
Run Code Online (Sandbox Code Playgroud)

在styles.css文件中.

  • 你可以省去第二个`normalize.css`,只需要第一个就足够了 (10认同)

小智 5

接受的响应似乎不适用于应用程序。我需要删除../路径名称中的。

angular.json款式位应该是这样的:

"styles": [
    "node_modules/normalize.css/normalize.css",
    "styles.css"
  ],
Run Code Online (Sandbox Code Playgroud)