Как добавить bootstrap в проект angular-cli

114

Мы хотим использовать bootstrap 4 (4.0.0-alpha.2) в нашем приложении, созданном с помощью angular -cli 1.0.0-beta.5 (w/node v6.1.0).

После загрузки бутстрапа и его зависимостей с npm наш первый подход заключался в добавлении их в angular-cli-build.js:

  'bootstrap/dist/**/*.min.+(js|css)',  
  'jquery/dist/jquery.min.+(js|map)',  
  'tether/dist/**/*.min.+(js|css)',

и импортируйте их в наш index.html

  <script src="vendor/jquery/dist/jquery.min.js"></script>
  <script src="vendor/tether/dist/js/tether.min.js"></script>
  <link rel="stylesheet" type="text/css" href="vendor/bootstrap/dist/css/bootstrap.min.css">
  <script src="vendor/bootstrap/dist/js/bootstrap.min.js"></script>

Это отлично работало с ng serve, но как только мы создали сборку с флагом -prod, все эти зависимости исчезли из dist/vendor (сюрприз!).

Как мы планируем обрабатывать такой сценарий (т.е. загружать сценарии начальной загрузки) в проекте, созданном с помощью angular -cli?

У нас были следующие мысли, но мы действительно не знаем, куда идти...

  • используйте CDN? но мы предпочитаем обслуживать эти файлы, чтобы гарантировать, что они будут доступны.

  • скопировать зависимости dist/vendor после нашего ng build -prod? Но это похоже на что-то angular -cli должно обеспечить, поскольку оно "заботится" о части сборки?

  • добавить jquery, bootstrap и tether в src/system-config.ts и каким-то образом вложить их в наш пакет в main.ts? Но это казалось неправильным, учитывая, что мы не будем явно использовать их в нашем коде приложения (в отличие от moment.js или что-то вроде lodash, например)

  • 0
    У вас есть они в вашем файле system-config.ts? Вы должны сопоставить их.
  • 1
    Многие из ответов ниже рекомендуют использовать ngx-bootstrap. Я обнаружил, что это не полная замена для jquery-плагинов Bootstrap, и иногда вам все еще нужно использовать эти «родные» jquery-плагины, такие как функция свертывания в таблицах. В этом случае ищите один из ответов ниже, которые объясняют, как явно импортировать скрипт jquery из файла .angular-cli.json.
Показать ещё 2 комментария
Теги:
angular
angular-cli

18 ответов

173
Лучший ответ

** ВАЖНОЕ ОБНОВЛЕНИЕ: ng2-bootstrap теперь заменяется на ngx-bootstrap **

ngx-bootstrap поддерживает как angular 3, так и 4.

Обновление: 1.0.0-beta.11-webpack или выше версий

Прежде всего проверьте версию angular -cli со следующей командой в терминале: ng -v

Если ваша версия angular -cli больше, чем 1.0.0-beta.11-webpack то вы должны выполнить следующие шаги:

  • установить ngx-bootstrap и bootstrap:

    npm install ngx-bootstrap bootstrap --save
    

В этой строке теперь устанавливается bootstrap 3, но в будущем можно установить bootstrap 4. Имейте в виду, что ngx-bootstrap поддерживает обе версии.

  1. откройте src/app/app.module.ts и добавьте

    import { AlertModule } from 'ngx-bootstrap';
    ...
    @NgModule({
    ...
    imports: [AlertModule.forRoot(), ... ],
    ... 
    })
    
  2. откройте angular -cli.json и вставьте новую запись в массив стилей

      "styles": [
    "styles.css",
    "../node_modules/bootstrap/dist/css/bootstrap.min.css"
    ],
    
  3. откройте src/app/app.component.html и добавьте

    <alert type="success">hello</alert>

1.0.0-beta.10 или ниже версии:

И, если ваша версия angular -cli версии 1.0.0-beta.10 или ниже, вы можете использовать следующие шаги.

Сначала перейдите в каталог проекта и введите

npm install ngx-bootstrap --save

затем откройте angular -cli-build.js и добавьте эту строку

vendorNpmFiles: [
   ..................
   'ngx-bootstrap/**/*.js',
    ....................
  ]

откройте src/system-config.ts, напишите

const map:any = {
     ..................
   'ngx-bootstrap': 'vendor/ngx-bootstrap',
    ....................

}

и

const packages: any = {
  'ngx-bootstrap': {
    format: 'cjs',
    defaultExtension: 'js',
    main: 'ngx-bootstrap.js'
  }
};
  • 5
    Что такое ng2-bootstrap? что означает добавление нативной начальной загрузки в angular 2? Извините, я в замешательстве и посмотрел, но все еще в замешательстве. почему я не могу предпринять те же шаги для загрузки начального загрузчика вместо использования стороннего ng2-bootstrap.
  • 1
    @mjwrazor потому что начальная загрузка - это не только стили. это интерфейсная часть. чтобы быть ясным, проверьте использование компонента рейтинга с ng2-bootstrap и подумайте о кодах, которые вы напишете для его реализации.
Показать ещё 9 комментариев
58

Поиск ключевого словa > Установка глобальной библиотеки на https://github.com/angular/angular-cli поможет найти ответ.

В соответствии с их документом вы можете сделать следующие шаги, чтобы добавить библиотеку Bootstrap.

Сначала установите Bootstrap из npm:

npm install bootstrap@next

Затем добавьте необходимые файлы script в приложения [0].scripts в файле angular -cli.json:

 "scripts": [
    "../node_modules/bootstrap/dist/js/bootstrap.js"
    ],

Наконец добавьте Bootstrap CSS в приложение [0].styles array:

"styles": [
    "styles.css",
    "../node_modules/bootstrap/dist/css/bootstrap.css"
    ],

Перезапустите ng-службу, если вы ее запустите, и Bootstrap 4 должен работать над вашим приложением.

Это лучшее решение. Но если вы не перезапустите ng-службу, это никогда не будет работать. Настоятельно рекомендуется выполнить это последнее действие.

  • 2
    Как я пишу, это единственное решение, которое, похоже, использует последнюю версию angular-cli.
  • 1
    Bootstrap.js, безусловно, не нужен! Поскольку вы не хотите использовать juqery bootstrap.js для этого, вы должны установить директивы ng2 bootstrap.
Показать ещё 4 комментария
27

Выполните следующие действия:

npm i bootstrap@next --save

Это добавит bootstrap 4 в ваш проект.

Затем перейдите к файлу src/style.scss или src/style.css (выберите то, что вы используете) и импортируйте bootstrap там:

Для style.css

/* You can add global styles to this file, and also import other style files */
@import "../node_modules/bootstrap/dist/css/bootstrap.min.css";

Для style.scss

/* You can add global styles to this file, and also import other style files */
@import "../node_modules/bootstrap/scss/bootstrap";

Для скриптов вам все равно придется добавить файл в файл angular -cli.json, например:

 "scripts": [
        "../node_modules/jquery/dist/jquery.js",
        "../node_modules/tether/dist/js/tether.js",
        "../node_modules/bootstrap/dist/js/bootstrap.js"
    ],
  • 3
    ИМХО это тоже отличный вариант, особенно с последними версиями angular-cli. Большим преимуществом является то, что этот метод не зависит от людей, которые обновляют библиотеку из пакета npm, упомянутого в принятом ответе; Более того, это также позволяет нам переопределять переменные начальной загрузки, используя SASS, не указывая напрямую на скомпилированные CSS-файлы.
  • 1
    Да, это чище и более модульно, поэтому я предпочитаю это!
Показать ещё 8 комментариев
20

Сначала вам нужно установить тросик, jquery и bootstrap с помощью этих команд

npm i -S tether
npm i -S jquery
npm i -S [email protected] 

После добавления этих строк в ваш angular -cli.json файл

  "styles": [
    "styles.scss",
    "../node_modules/bootstrap/scss/bootstrap-flex.scss"
  ],
  "scripts": [
    "../node_modules/jquery/dist/jquery.js",
    "../node_modules/tether/dist/js/tether.js",
    "../node_modules/bootstrap/dist/js/bootstrap.js"
  ]
  • 2
    Вы имели в виду $ projectRoot / .angular-cli.json?
13

Обновление v1.0.0-beta.26

В документе вы можете увидеть новый способ импорта bootstrap здесь

Если он все еще не работает, перезапустите команду ng serve

версии 1.0.0 или ниже:

В вашем файле index.html вам просто нужна ссылка bootstrap css (без скриптов js js)

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">

И

npm install ng2-bootstrap --save
npm install moment --save

После установки ng2-bootstrap в my_project/src/system-config.ts:

/** Map relative paths to URLs. */
const map: any = {
  'moment': 'vendor/moment/moment.js',
  'ng2-bootstrap': 'vendor/ng2-bootstrap'
};

/** User packages configuration. */
const packages: any = {
  'ng2-bootstrap': {
    defaultExtension: 'js'
  },
  'moment':{
     format: 'cjs'
  }
};

И в my_project/angular -cli-build.js:

module.exports = function (defaults) {
return new Angular2App(defaults, {
    vendorNpmFiles: [
        'ng2-bootstrap/**/*',
        'moment/moment.js'
    ]
});
};

Не забывайте эту команду для размещения вашего модуля в поставщике:

ng build

для импорта из другого модуля, который является тем же самым принципом.

  • 1
    как это позволяет загрузчику использовать jquery? Я сделал это, и это не работает.
  • 0
    пример наконец нашел это и все заработало. Я не мог понять это какое-то время.
9

Так как никто не упоминал официальную (angular -cli команду) историю о том, как включить Bootstrap еще: https://github.com/angular/angular-cli/wiki/stories-include-bootstrap

Включить Bootstrap

Bootstrap - популярная структура CSS, которая может использоваться в проекте Angular. Это руководство проведет вас через добавление бутстрапа в проект Angular CLI и его настройку для использования начальной загрузки.

Использование CSS

Начало работы

Создайте новый проект и перейдите в проект

ng new my-app
cd my-app

Установка Bootstrap

Когда новый проект будет создан и готов, вам потребуется установить bootstrap в ваш проект как зависимость. Используя параметр --save, зависимость будет сохранена в package.json

# version 3.x
npm install bootstrap --save

# version 4.x
npm install bootstrap@next --save

Настройка проекта

Теперь, когда проект настроен, он должен быть настроен для включения бутстрапа CSS.

  • Откройте файл .angular-cli.json из корня вашего проекта.
  • В свойстве apps первым элементом в этом массиве является приложение по умолчанию.
  • Существует свойство styles, которое позволяет применять внешние глобальные стили к вашему приложению.
  • Укажите путь к bootstrap.min.css

После выполнения этого он должен выглядеть следующим образом:

"styles": [
        "../node_modules/bootstrap/dist/css/bootstrap.min.css",
        "styles.css"
      ],

Примечание.. При внесении изменений в .angular-cli.json вам нужно будет заново запустить ng serve, чтобы получить изменения конфигурации.

Проект тестирования

Откройте app.component.html и добавьте следующую разметку:

<button class="btn btn-primary">Test Button</button>

При настройке приложения запустите ng serve, чтобы запустить приложение в режиме разработки. В браузере перейдите к приложению localhost:4200. Убедитесь, что кнопка стиля загрузочного стиля отображается.

Использование SASS

Начало работы

Создайте новый проект и перейдите в проект

ng new my-app --style=scss
cd my-app

Установка Bootstrap

# version 3.x
npm install bootstrap-sass --save

# version 4.x
npm install bootstrap@next --save

Настройка проекта

Создайте пустой файл _variables.scss в src/.

Если вы используете bootstrap-sass, добавьте следующее в _variables.scss:

$icon-font-path: '../node_modules/bootstrap-sass/assets/fonts/bootstrap/';

В styles.scss добавьте следующее:

// version 3
@import 'variables';
@import '../node_modules/bootstrap-sass/assets/stylesheets/_bootstrap';

// version 4
@import 'variables';
@import '../node_modules/bootstrap/scss/bootstrap';

Проект тестирования

Откройте app.component.html и добавьте следующую разметку:

<button class="btn btn-primary">Test Button</button>

При настройке приложения запустите ng serve, чтобы запустить приложение в режиме разработки. В браузере перейдите к приложению localhost:4200. Убедитесь, что кнопка стилируется. Чтобы убедиться, что ваши переменные используются, откройте _variables.scss и добавьте следующее:

$brand-primary: red;

Верните браузер, чтобы изменить цвет шрифта.

  • 4
    Это решение не добавляет файлы Javascript для начальной загрузки, только CSS
  • 0
    Смотрите эту другую историю: github.com/angular/angular-cli/wiki/stories-global-lib . В нем описывается добавление файлов сценариев на примере начальной загрузки 4.
Показать ещё 2 комментария
9

Я думаю, что вышеупомянутые методы изменились после релиза, проверьте эту ссылку

https://github.com/valor-software/ng2-bootstrap/blob/development/docs/getting-started/ng-cli.md

инициировать проект

npm i -g angular-cli
ng new my-app
cd my-app
ng serve
npm install --save @ng-bootstrap/ng-bootstrap

установить ng-bootstrap и bootstrap

npm install ng2-bootstrap bootstrap --save

открыть файл src/app/app.module.ts и добавить

import { AlertModule } from 'ng2-bootstrap/ng2-bootstrap';
...

@NgModule({
   ...
   imports: [AlertModule, ... ],
    ... 
})

откройте angular -cli.json и вставьте новую запись в массив стилей

"styles": [
        "styles.css",
        "../node_modules/bootstrap/dist/css/bootstrap.min.css"
      ],

открыть файл src/app/app.component.html и проверить все работы, добавив

<alert type="success">hello</alert>
  • 1
    Метод от Ахмеда Хамди работает, по-видимому, сейчас произошло обновление кода. Обновил свое сообщение с решением.
  • 1
    если вы хотите использовать Bootstrap 4, вам нужно изменить "npm install ng2-bootstrap bootstrap --save" TO BE "npm install ng2-bootstrap [email protected] --save" .... не полностью очевидно из документации (выполните поиск 'card-' в bootstrap.css, чтобы узнать, сработал ли он) ... обратите внимание, что в настоящее время это Alpha 6, это, несомненно, изменится ... проверьте сайт начальной загрузки для текущей инструкции npm
Показать ещё 1 комментарий
5

Так как это стало настолько запутанным, и ответы здесь полностью смешаны, я просто предлагаю пойти с официальной командой ui-team для BS4 (да, так много таких репозиций для NG-Bootstrap.

Просто следуйте инструкциям здесь https://github.com/ng-bootstrap/ng-bootstrap, чтобы получить BS4.

Цитата из lib:

Эта библиотека создается с нуля командой ui-bootstrap. Мы используют TypeScript и нацеливаются на фреймворк Bootstrap 4. CSS.

Как и в случае с Bootstrap 4, эта библиотека работает. пожалуйста, проверьте наш список вопросов, чтобы увидеть все, что мы реализуем. Чувствовать свободно комментировать там.

Просто скопируйте вставку, что там для этого:

npm install --save @ng-bootstrap/ng-bootstrap

После установки вам нужно импортировать наш основной модуль:

import {NgbModule} from '@ng-bootstrap/ng-bootstrap';

Единственная оставшаяся часть - это список импортированного модуля в вашем прикладном модуле. Точный метод будет немного отличаться для корневого (верхнего уровня) модуля, для которого вы должны получить код, похожий на (обратите внимание на NgbModule.forRoot()):

import {NgbModule} from '@ng-bootstrap/ng-bootstrap';

@NgModule({
  declarations: [AppComponent, ...],
  imports: [NgbModule.forRoot(), ...],  
  bootstrap: [AppComponent]
})
export class AppModule {
}

Другие модули в вашем приложении могут просто импортировать NgbModule:

import {NgbModule} from '@ng-bootstrap/ng-bootstrap';

@NgModule({
  declarations: [OtherComponent, ...],
  imports: [NgbModule, ...], 
})
export class OtherModule {
}

Это, по-видимому, наиболее устойчивое поведение

3

Попробуйте это

npm install bootstrap@next

https://github.com/angular/angular-cli#global-library-installation

2

1, установите bootstrap

npm install bootstrap@next

2, добавьте код в .angular-cli.json:

      "styles": [
        "styles.css",
        "../node_modules/bootstrap/dist/css/bootstrap.css"
      ],
      "scripts": [
        "../node_modules/jquery/dist/jquery.js",
        "../node_modules/tether/dist/js/tether.js",
        "../node_modules/bootstrap/dist/js/bootstrap.js"
      ],

3, добавьте bootstrap.css в свой код style.scss

@import "../node_modules/bootstrap/dist/css/bootstrap.min.css";

4, перезапустите локальный сервер

  • 0
    Хотя ngx-bootstrap хорош для компонентов, которые он поддерживает, иногда вам все равно нужно использовать «нативные» плагины jquery, например, функциональность свертывания в таблицах. Затем вам все еще нужно явно импортировать скрипт jquery, который показывает этот ответ.
2
  • Запуск в bash npm install ng2-bootstrap bootstrap --save
  • Добавить/изменить следующее в angular-cli.json
    "styles": [ "../node_modules/bootstrap/dist/css/bootstrap.min.css" ], "scripts": [ "../node_modules/jquery/dist/jquery.min.js", "../node_modules/bootstrap/dist/js/bootstrap.min.js" ],
2

Вы также можете посмотреть это видео от Майка Брочи, у которого есть полезная информация о том, как добавить бутстрап в ваш проект Angular -Cli. https://www.youtube.com/watch?v=obbdFFbjLIU (около минут 13:00)

1

установить boostrap с помощью npm

npm install boostrap@next --save

затем проверьте папку node_modules для файла boostrap.css(в пределах dist), обычно путь

"../node_modules/bootstrap/dist/css/bootstrap.css",

добавить этот путь | import boostrap в стиле style.css или style.scss

@import "../node_modules/bootstrap/dist/css/bootstrap.css";  //bootstrap
@import "~@angular/material/prebuilt-themes/indigo-pink.css // angular material theme

что он.

  • 0
    Как насчет помещения его в массив стилей angular-cli.json ? Не обязательно?
  • 0
    Нет, это не обязательно. так как мы включаем наш файл style.css в этот массив. мы можем импортировать другие CSS-файлы в нашем style.css или style.scss "@import" ~@angular/material/prebuilt-themes/indigo-pink.css ";" @import "../node_modules/bootstrap/dist/css /bootstrap.css ";
Показать ещё 2 комментария
1

Теперь с новой версией ng-bootstrap 1.0.0-beta.5 поддерживается большинство родных директив Angular на основе разметки Bootstrap и CSS.

Единственная зависимость, необходимая для работы с этим, - bootstrap. Нет необходимости использовать jquery и popper.js.

ng-bootstrap - полностью заменить реализацию JavaScript для компонентов. Поэтому вам не нужно включать bootstrap.min.js в раздел сценариев в вашем .angular-cli.json.

выполните следующие шаги, когда вы интегрируете bootstrap с сгенерированным проектом с последней версией angular -cli.

  • Inculde bootstrap.min.css в разделе .angular-cli.json, styles.

    "styles": [
       "styles.scss",
       "../node_modules/bootstrap/dist/css/bootstrap.min.css"
    ],
    
  • Установите ng-bootstrap.

    npm install --save @ng-bootstrap/ng-bootstrap
    
  • Добавьте это в свой основной класс модуля.

    import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
    
  • Включите следующее в раздел импорта основного модуля.

    @NgModule({
       imports: [NgbModule.forRoot(), ...],
    })
    
  • Сделайте также следующее в своем модуле (-ах), если вы собираетесь использовать компоненты ng-bootstrap внутри этих классов модулей.

    import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
    
    @NgModule({
       imports: [NgbModule, ...],
    })
    
  • Теперь ваш проект готов использовать доступные компоненты ng-bootstrap.

1

Выполните следующие действия:

  • nmp install --save bootstrap

  • "styles": [ "../node_modules/bootstrap/dist/css/bootstrap.min.css", "styles.css"]

После этого вы должны перезапустить ng-службу

Enjoy

1

Рабочий пример в случае использования angular -cli и css:

1.install bootstrap

npm установка загрузочного троса jquery --save

2.add to.angular-cli.json

  "styles": [
    "../node_modules/bootstrap/dist/css/bootstrap.css"
  ],
  "scripts": [
    "../node_modules/jquery/dist/jquery.js",
    "../node_modules/tether/dist/js/tether.js",
    "../node_modules/bootstrap/dist/js/bootstrap.js"
  ],
1

angular-cli теперь имеет специальную страницу wiki, где вы можете найти все, что вам нужно. TL;DR, установите bootstrap через npm и добавьте ссылку стилей в раздел "стили" в файле .angular-cli.json

1

Откройте команду Terminal/command в соответствующем каталоге проекта и введите следующую команду.

npm install --save bootstrap

Затем откройте файл .angular-cli.json, найдите

"styles": [ "styles.css" ],

измените это на

 "styles": [
    "../node_modules/bootstrap/dist/css/bootstrap.min.css",
    "styles.css"
  ],

Все сделано.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню