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

# Vue CLI

Если вы не заинтересованы настраивать вручную webpack, тогда мы рекомендуем вам разворачивать проекты с помощью Vue CLI. Проекты создаваемые с помощью Vue CLI предварительно сконфигурированы с учётом большинства общих потребностей при разработке из коробки.

Следуйте этому руководству, если встроенная конфигурация Vue CLI не подходит для ваших нужд, или вы предпочитаете создавать собственную конфигурацию webpack с нуля.

# Настройка вручную

# Установка

Если вы не продвинутый пользователь, использующий собственную форкнутую версию компилятора шаблонов Vue, то должны установить vue-loader и vue-template-compiler вместе:

npm install -D vue-loader vue-template-compiler

Причина, по которой vue-template-compiler требуется устанавливать отдельно в том, что можно отдельно указать его версию.

Каждый раз, когда выходит новая версия vue, выпускается и соответствующая версия vue-template-compiler. Версия компилятора должна быть аналогичной версии базового пакета vue, чтобы vue-loader генерировал код совместимый с runtime. Поэтому каждый раз, когда вы обновляете vue в проекте, вы должны также обновить и vue-template-compiler до такой же версии.

# Конфигурация webpack

Конфигурация Vue Loader немного отличается от настройки других загрузчиков. В дополнении к правилу, которое будет применять vue-loader ко всем файлам с расширением .vue, убедитесь что добавили плагин Vue Loader в вашу конфигурацию webpack:

// webpack.config.js
const { VueLoaderPlugin } = require('vue-loader')

module.exports = {
  module: {
    rules: [
      // ... другие правила
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      }
    ]
  },
  plugins: [
    // убедитесь что подключили плагин!
    new VueLoaderPlugin()
  ]
}

Плагин необходим! Он отвечает за клонирование любых других правил, которые вы определили, чтобы применить их к соответствующим языковым блокам в файлах .vue. Например, если у вас есть правило, соответствующее файлам /\.js$/, оно будет применяться к секциям <script> в файлах .vue.

Более полная версия конфигурации webpack будет выглядеть так:

// webpack.config.js
const { VueLoaderPlugin } = require('vue-loader')

module.exports = {
  mode: 'development',
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      },
      // это будет применяться к файлам `.js`
      // А ТАКЖЕ к секциям `<script>` внутри файлов `.vue`
      {
        test: /\.js$/,
        loader: 'babel-loader'
      },
      // это будет применяться к файлам `.css`
      // А ТАКЖЕ к секциям `<style>` внутри файлов `.vue`
      {
        test: /\.css$/,
        use: [
          'vue-style-loader',
          'css-loader'
        ]
      }
    ]
  },
  plugins: [
    // убедитесь что подключили плагин!
    new VueLoaderPlugin()
  ]
}

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

ВНИМАНИЕ

При разработке библиотеки или работе в монорепозитории, имейте ввиду, что импорты CSS являются сайд-эффектами. Убедитесь, что удалили "sideEffects": false в package.json, в противном случае фрагменты CSS будут удалены webpack в сборках для production.