Angular 2: Как правильно автоматически импортировать normalize.css

Я новый пользователь Angular 2, и у меня есть некоторые проблемы с ним.

Традиционно мы могли бы использовать<link rel="stylesheet" href="node_modules/normalize.css/normalize.css" /> импортировать файл CSS, но я хочу, чтобы Angular 2 автоматически импортировал его, используяimport.

Я пытался использовать тот же способ, когда я использовал Материал 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'.

И код не скомпилируется. Но я действительно понятия не имею, что случилось.

 dfsq16 июл. 2016 г., 11:42
Не имеет смысла: нормализовать CSS действительно нужно включить в качестве тега ссылки, не нужно слишком усложнять.
 Garfield55016 июл. 2016 г., 11:48
Извините, но мне просто интересно, как использовать normalize.css с Angular ....

Ответы на вопрос(4)

Решение Вопроса

1.0.0-beta.15) версия angular-cli, решение довольно простое:

npm i normalize.cssдобавлять"../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".

Пример:

{
  "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
  }
}
 Blauhirn30 дек. 2016 г., 16:24
обратите внимание, что cli должен быть перезапущен, чтобы это
 Drenai12 окт. 2018 г., 23:13
--save обновляет файл package.json для включения пакета. ~ Указывает компилятору scss искать импортированный файл normalize.css в папке node_modules
 Pim12 окт. 2018 г., 21:48
@Drenai Что делает--save флаг делает, и что означает «~»? Я сделал npm без--save но это не работает
 Drenai26 дек. 2017 г., 14:29
Теперь есть лучший способ загрузки. В файле styles.css (или styles.scss, если вы используете sass) добавьте@import '~normalize.css'; после выполненияnpm install --save normalize.css,~ обозначает импорт как узел модуля. Package.json модуля 'normalize' указывает на правильный файл .css. Я проверил это с Angular v5, последний CLI, сng serve --prod а также--aot

// angular-cli-build..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">

На основеэтот ответвсе, что нужно было сделать, это:

@import '~normalize.css/normalize.css';

В файле styles.css.

 distante12 дек. 2018 г., 13:41
Это будет устаревшим в новых версиях node-sass
 Drenai26 дек. 2017 г., 14:30
Вы можете пропустить второйnormalize.cssдостаточно первого
 Joseph Briggs06 авг. 2017 г., 19:01
Работал как шарм, добавлен в styles.scss
 Simon_Weaver05 июн. 2018 г., 22:00
Если вам кажется, что это не работает, убедитесь, что вы понимаетеnormalize.css и что он делает и не делает. например. Я ожидалul тег должен быть сброшен до 0 поля и в то время какreset.css Является ли этоnormalize.css не. Если вы новичок в normalize.css, проверьте этоstackoverflow.com/questions/6887336

../ в имени пути.

angular.json немного стилей должно быть примерно так:

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

Ваш ответ на вопрос