2016-11-13 19 views
10

Trong 2 ứng dụng kiễu góc, tôi chuyển từ css thô xuống dưới vì vậy mà tôi có thể viết:Nhập bootstrap ít hơn để mở rộng một lớp tạo 404 trên glyphicons phông chữ

.main-button { 
    .btn; 
    .btn-primary; 
    padding: 1em; 
} 

thay vì xếp chồng tên lớp ở khắp mọi nơi trong html của tôi . Để có được điều này để làm việc, tôi cần phải:

  1. trong angular-cli.json, thay đổi:

    "defaults": { "styleExt": "css", "prefixInterfaces": false }

    để "styleExt": "less",

  2. Đổi tên tôi foo.component.css-foo.component.less và cập nhật các foo.component.ts cho phù hợp.

  3. Trong thành phần ít hơn, để có thể tham khảo các lớp bootstrap, tôi phải: @import "~bootstrap/less/bootstrap";

này hoạt động tốt, ngoại trừ rằng tôi bây giờ nhận được 404 lỗi trong trình duyệt giao diện điều khiển:

jquery-1.12.3.min.js:2 GET http://localhost:4200/node_modules/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2 (anonymous function) @ jquery-1.12.3.min.js:2i @ jquery-1.12.3.min.js:2fireWith @ jquery-1.12.3.min.js:2ready @ jquery-1.12.3.min.js:2K @ jquery-1.12.3.min.js:2 
foobar:1 GET http://localhost:4200/node_modules/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff 
foobar:1 GET http://localhost:4200/node_modules/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf 

Tôi đã thử một vài biến thể trên @ biểu tượng-phông chữ-đường dẫn mà không thành công. Tôi đã kiểm tra các yêu cầu cho phông chữ trong tab mạng và xem http://localhost:4200/448c34a56d699c29117adc64c43affeb.woff2.

Tôi cũng đã cố gắng sử dụng sass/scss. Điều này đòi hỏi các mô-đun bổ sung bootstrap-sass với một chỉ thị bao gồm tương tự nhưng kết quả là chính xác như nhau.

Cách phù hợp để thực hiện việc này mà không gặp phải lỗi 404 là gì?

Điều này được phục vụ bởi ng serve, tất cả đều mặc định ở đó.

+0

Bạn có một số loại .htacces rằng lưu trữ "http: // localhost: 4200/node_modules/bootstrap/fonts/bootstrap/... "làm tuyến đường thay vì tệp? –

+2

Không liên quan đến vấn đề, nhưng bạn có thể muốn [nhập bằng tham chiếu] (https://css-tricks.com/reference-imports-in-less-are-kinda-cool/). Nếu không nó sẽ bao gồm toàn bộ Bootstrap vào phong cách thành phần của bạn, mà có thể không phải là những gì bạn muốn. Ví dụ. '@import (reference)" ~ bootstrap/less/bootstrap ";' và chỉ mở rộng các lớp bạn cần (xem bài viết). –

+0

Mike: Thật đơn giản, vì vậy không có gì đặc biệt có thể can thiệp. YaroslavAdmin: Rất thú vị, cảm ơn. Không giúp đỡ nhưng tôi sẽ sử dụng nó. –

Trả lời

1

tôi đã cùng một vấn đề với sass:

$icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/"; 
@import "~bootstrap-sass/assets/stylesheets/bootstrap"; 

https://github.com/igorzg/angular2-zero-to-hero/blob/master/ui/src/styles.scss

Vì vậy, ít phải ở trong bạn phong cách.ít:

$icon-font-path: "~bootstrap/fonts/"; 
@import "~bootstrap/less/bootstrap"; 
+0

Đây là giải pháp đúng. Nó không làm việc cho tôi khi bạn trả lời rõ ràng vì tôi đã đưa nó vào một tệp cụ thể, không phải là các tệp styles.scss chính. (Tôi chuyển sang SASS trong thời gian chờ đợi) Di chuyển đến Angular 4, các thử nghiệm đã thất bại vì những cảnh báo này. Thêm hai dòng này ở đầu styles.scss đã giải quyết nó. Có thể có một vấn đề khác trong Angular 2 đã được sửa vào Angular 4, khó mà nói được. –

+0

@EricDarchis Nó không phải là vấn đề trong góc 2 bạn phải cùng một điều nhập khẩu nó trong css chính và chuyển sang scss – igorzg

0

Angular-CLI sẽ nhóm phông chữ của bạn như thế này 448c34a56d699c29117adc64c43affeb.woff2. Nếu bạn muốn các tập tin thô, có thể bạn phải xuất bản chúng trên máy chủ của bạn ...

+0

Thay vào đó, tôi muốn sử dụng ít phông chữ/scss hơn. Nhưng không có ý tưởng về làm thế nào để làm điều đó kể từ khi tôi chỉ cần nhập khẩu các định nghĩa từ tập tin của tôi ít hơn. –

+0

Nhưng vấn đề là với jQuery, không phải với Angular và CSS. Phải không? –

+0

Nếu bạn muốn yêu cầu 'http: // localhost: 4200/node_modules/some_file', bạn phải hiển thị nó bằng bí danh hoặc proxy. Trong môi trường dev, bạn có thể tạo một tệp proxy.conf.json như được hiển thị ở đây: https://webpack.github.io/docs/webpack-dev-server.html#proxy và khởi chạy máy chủ của bạn với 'ng serve - proxy-config proxy.conf.json' –

0

Hãy thử: ng set defaults.styleExt scss

góc-cli phải phù hợp toàn cầu và địa phương phiên bản

Run ng init kiểm tra những thay đổi trong tất cả các file tự động tạo ra

Cuối cùng ng build

Để giữ mọi thứ đồng bộ hóa cũng hãy thử:

git clone https://github.com/angular/angular-cli.git 
cd angular-cli 
npm link 

Đối với các phông chữ và tài sản, ngay bây giờ góc-cli giả định con đường dựa trên các tập tin nguồn:

"assets": [ "assets", "favicon.ico" ] 
+0

Tôi đã thử cả hai ít hơn và scss. 'ng set defaults.styleExt' thực sự chỉ thay đổi dòng trong câu hỏi của tôi. Nó cũng rất lỗi và có xu hướng làm lộn xộn cli.json góc cạnh nhưng điều đó không liên quan ở đây. Nhưng dù sao, tất cả các tài sản đều có, phông chữ đi kèm. Và họ làm việc. Nó chỉ là bao gồm các bootstrap ít trong component.less của tôi cố gắng để xác định vị trí các phông chữ với tên đầy đủ của nó chứ không phải là một đóng gói. –

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