2016-07-16 11 views
10

Tôi là người dùng Angular 2 mới và tôi có một số vấn đề với nó.Góc 2: Cách nhập tự động một cách chính xác normalize.css

Theo truyền thống, chúng tôi có thể sử dụng <link rel="stylesheet" href="node_modules/normalize.css/normalize.css" /> để nhập tệp css, nhưng tôi muốn làm cho Angular 2 tự động nhập bằng cách sử dụng import.

Tôi cố gắng để sử dụng cách tương tự khi tôi sử dụng vật liệu 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';

Biên tập viên sẽ phàn nàn:

Không thể tìm thấy mô-đun 'bình thường hóa-path'.

Và mã sẽ không biên dịch. Nhưng tôi thực sự không biết có gì sai.

+0

Không có ý nghĩa: chuẩn hóa CSS phải thực sự được bao gồm dưới dạng thẻ liên kết, không cần phải quá phức tạp. – dfsq

+0

Xin lỗi, nhưng tôi chỉ tò mò về cách sử dụng normalize.css với Angular .... – Garfield550

Trả lời

16

Với sự hiện hành (1.0.0-beta.15) phiên bản của góc-cli, giải pháp khá dễ dàng:

  1. npm i normalize.css
  2. thêm "../node_modules/normalize.css/normalize.css" trong apps[0].styles trong file angular-cli.json
{ 
    "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": [ 
     "styles.css", 
     "../node_modules/normalize.css/normalize.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 
    } 
} 
+3

lưu ý rằng cli cần phải được khởi động lại để điều này có hiệu lực – Blauhirn

+1

Hiện có một phương pháp tốt hơn để tải ngay bây giờ. Trong styles.css (hoặc styles.scss nếu bạn sử dụng sass), hãy thêm '@import '~ normalize.css';' sau khi thực hiện 'npm install --save normalize.css'. '~' Biểu thị việc nhập khẩu như là một mô-đun nút. Package.json của mô đun 'normalize' trỏ tới tệp .css chính xác. Tôi đã thử nghiệm điều này với Angular v5, CLI mới nhất, với 'ng serve --prod' và' --aot' – Ryan

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' 
 
    ] 
 
    }); 
 
};

và đơn giản thêm vào liên kết css index.html

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

16

Dựa trên this answer, tất cả cần phải làm là:

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

Trong file styles.css.

+0

Làm việc như một sự quyến rũ, được thêm vào styles.scss –

+3

Bạn có thể bỏ qua 'normalize 'thứ hai.css', chỉ là cái đầu tiên là đủ – Ryan

Các vấn đề liên quan