Ответ 1
Вы не сможете импортировать какой-либо css в файл поставщиков с помощью этого стека без внесения каких-либо изменений.
Почему? Хорошо, потому что эта строка:
import 'bootstrap/dist/css/bootstrap.css';
Он импортирует ваш CSS только как строку, когда на самом деле то, что вы хотите, это ваш css поставщика в теге стиля. Если вы проверите config/webpack.commons.js
, вы найдете это правило:
{
test: /\.css$/,
loaders: ['to-string-loader', 'css-loader']
},
Это правило позволяет вашим компонентам импортировать файлы css, в основном это:
@Component({
selector: 'app',
encapsulation: ViewEncapsulation.None,
styleUrls: [
'./app.component.css' // this why you import css as string
],
В AppComponent нет инкапсуляции из-за этой строки encapsulation: ViewEncapsulation.None,
, что означает, что любые правила css будут применяться глобально к вашему приложению. Таким образом, вы можете импортировать стили bootstrap в свой компонент приложения:
@Component({
selector: 'app',
encapsulation: ViewEncapsulation.None,
styleUrls: [
'./app.component.css',
'../../node_modules/bootstrap/dist/css/bootstrap.css'
],
Но если вы настаиваете на импорте на ваш vendor.ts
, вам нужно будет установить новый загрузчик, npm i style-loader --save-dev
это позволит webpack вводить css на вашу страницу. Затем вам нужно создать определенное правило на вашем webpack.common.js и изменить существующее:
{ //this rule will only be used for any vendors
test: /\.css$/,
loaders: ['style-loader', 'css-loader'],
include: [/node_modules/]
},
{
test: /\.css$/,
loaders: ['to-string-loader', 'css-loader'],
exclude: [/node_modules/] //add this line so we ignore css coming from node_modules
},
Правило firs будет применяться только при попытке импортировать css из любого пакета внутри node_modules
, второе правило будет применяться к любому css, который вы импортируете извне node_modules