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

时间:2016-07-16 09:39:50

标签: css angular typescript normalize-css

我是一名新的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',
    ]
  });
};

// system-config.ts 

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

/** User packages configuration. */
const packages: any = {
  'normalize': {main: 'index.js'},
};

// app.component.ts

import { normalize } from 'normalize-path';

编辑会抱怨:

  

无法找到模块'normalize-path'。

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

4 个答案:

答案 0 :(得分:29)

基于this answer,所有需要做的就是:

[key.value...

在styles.css文件中。

答案 1 :(得分:27)

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

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

    注意:如果使用Angular 7,配置文件现在为angular.jsonapps[0].styles中normalise.css的路径应为"../node_modules/normalize.css/normalize.css"。< / p>

    示例:

    {
      "project": {
        "version": "1.0.0-beta.15",
        "name": "normalize.css-in-angular2"
      },
      "apps": [
        {
          "root": "src",
          "outDir": "dist",
          "assets": "assets",
          "index": "index.html",
          "main": "main.ts",
          "test": "test.ts",
          "tsconfig": "tsconfig.json",
          "prefix": "app",
          "mobile": false,
          "styles": [
            "../node_modules/normalize.css/normalize.css",
            "styles.css"
          ],
          "scripts": [],
          "environments": {
            "source": "environments/environment.ts",
            "dev": "environments/environment.ts",
            "prod": "environments/environment.prod.ts"
          }
        }
      ],
      "addons": [],
      "packages": [],
      "e2e": {
        "protractor": {
          "config": "./protractor.conf.js"
        }
      },
      "test": {
        "karma": {
          "config": "./karma.conf.js"
        }
      },
      "defaults": {
        "styleExt": "css",
        "prefixInterfaces": false
      }
    }
    

答案 2 :(得分:3)

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

angular.json 样式位应如下所示:

"styles": [
    "node_modules/normalize.css/normalize.css",
    "styles.css"
  ],

答案 3 :(得分:0)

// angular-cli-build.js

module.exports = function(defaults) {
  return new Angular2App(defaults, {
    vendorNpmFiles: [
      'systemjs/dist/system-polyfills.js',
      'systemjs/dist/system.src.js',
      'zone.js/dist/**/*.+(js|js.map)',
      'es6-shim/es6-shim.js',
      'reflect-metadata/**/*.+(ts|js|js.map)',
      'rxjs/**/*.+(js|js.map)',
      '@angular/**/*.+(js|js.map)',
      '@angular2-material/**/*.+(js|js.map)',
      'normalize.css/normalize.css'
    ]
  });
};

并简单地将css链接添加到index.html

// index.html
<link href="vendor/normalize.css/normalize.css" rel="stylesheet">