Как мне внести в белый список все, что мне нужно для работы BootstrapVue с Purgecss в Nuxt.js - PullRequest
0 голосов
/ 08 октября 2019

Я создал проект Nuxt.js, который использует BootstrapVue для пользовательского интерфейса. Чтобы уменьшить размер пакета, я импортирую только те компоненты BV, которые мне нужны, для каждого компонента. Тем не менее, я все еще получал слишком большой пакет, потому что bootstrap.css и bootstrap-vue.css были объединены полностью. bootstrap.css является основной проблемой с точки зрения размера.

В попытке решить эту проблему я установил nuxt-purgecss в надежде, что он извлечет все неиспользуемые css из bootstrap.css и bootstrap-vue. css и создайте версии для пакета, который включает в себя только css для классов BootsrapVue, которые я на самом деле использую.

Сначала ни один файл вообще не связывался, и после некоторого поиска я обнаружил, что решение появилосьбыть в белом списке селекторов BootstrapVue, которые я использую. (Хотя я был бы рад, если бы кто-то мог показать мне способ, в котором я не нуждался, и purgecss мог бы оценить его самостоятельно!)

Соответствующие части nuxt.config.js теперьследующим образом:

  modules: [
    'nuxt-purgecss'
  ],
  purgeCSS: {
    mode: 'postcss',
    paths: [
      'components/**/*.vue',
      'layouts/**/*.vue',
      'pages/**/*.vue',
      'plugins/**/*.js',
      'node_modules/bootstrap-vue/es/**/**/*.js',
      'node_modules/bootstrap-vue/**/*.js'
    ],
    styleExtensions: ['.css'],
    whitelist: [
      'html',
      'body',
      'navbar',
      'nuxt-progress',
      'b-navbar',
      'b-navbar-toggle',
      'b-navbar-brand',
      'b-navbar-nav',
      'b-nav-item',
      'b-alert',
      'b-collapse',
      'b-nav-item-dropdown',
      'b-dropdown-item',
      'b-container',
      'b-row',
      'b-col',
      'b-card',
      'b-form',
      'b-form-group',
      'b-form-input',
      'b-button',
      'b-modal'
    ],
    whitelistPatterns: [/^b-/, /nav/]
  },
  build: {
    /*
     ** You can extend webpack config here
     */
    extractCSS: true, // TODO: Necessary?
    extend(config, ctx) {
      // if (ctx.isDev) {
      //   config.devtool = ctx.isClient ? 'source-map' : 'inline-source-map'
      // }
      config.devtool = 'source-map'
    }
  }

После выполнения вышеизложенного я обнаружил, что мое построенное решение воспроизводит почти так, как ожидалось, но у меня возникло несколько проблем, которые я не могу понять:

<template>
  <b-navbar
    sticky
    toggleable="md"
    type="dark"
    variant="dark"
  >
    <b-navbar-toggle target="nav_collapse"></b-navbar-toggle>
    <b-navbar-brand to="/">Application</b-navbar-brand>
    <b-collapse id="nav_collapse" is-nav>
      <b-navbar-nav class="ml-auto mr-4">
        <auth-nav-item />
      </b-navbar-nav>
    </b-collapse>
  </b-navbar>
</template>

Это делает,но тип и вариант не вступают в силу, то есть это должен быть белый текст на черном фоне, но на самом деле он белый на белом (так эффективно невидим для пользователя.) Я могу это исправить, применив локальный стиль, но мне бы очень хотелосьчтобы понять, что мне нужно сделать, чтобы заставить это функционировать как задумано.

У меня похожая ситуация с b-alert, который имеет белый фон независимо от атрибута варианта.

Другой странный факт - это то, что <b-col md="5"> соблюдается, если в столбце нет b-сигнала. Если есть, то расширяется влево и вправо дальше, чем следовало бы.

Я предполагаю, что есть некоторые дополнительные вещи, которые мне нужно внести в белый список, но пока я изо всех сил пытаюсь понять, что они из себя представляют. Если кто-нибудь может сказать мне, я буду вечно благодарен !!!

(Кроме того, как я упоминал ранее, если бы был способ настроить это так, purgecss автоматически знает, что там есть, не сообщая об этом,это было бы еще лучше!)

1 Ответ

1 голос
/ 08 октября 2019

Bootstrap v4.3.x CSS не очень хорошо работает с PurgeCSS (на самом деле purgeCSS не очень хорошо работает с Bootstrap CSS), так как многие необходимые классы зависят от значений различных реквизитов. PurgeCSS делает обоснованные предположения, но не всегда делает правильные предположения.

Лучше всего не использовать PurgeCSS, а вместо этого использовать исходные файлы Bootstrap SCSS и включать только разделы (файлы) начальной загрузкиv4.3 SCSS, который вы используете (он относительно модульный, хотя это может немного сбивать с толку).

См .:

...