Как установить несколько выходных данных при сборке библиотеки с помощью vite

#vuejs3 #rollup #lib #vite

Вопрос:

Когда я пытаюсь создать библиотеку в vue3, я хочу установить несколько выходных файлов. Код, подобный этому:

 rollupOptions {
  output: [
    {
      file: 'bundle.js',
      format: 'cjs'
    },
    {
      file: 'bundle.min.js',
      format: 'iife',
      name: 'version',
    }
  ]
}
 

Тогда я получу сообщение об ошибке : «Вы должны установить либо «output.file» для однофайловой сборки, либо «output.dir» при создании нескольких блоков».

Итак, как я должен сделать, чтобы это сработало?

vite: 2.3.7

Ответ №1:

👉 Вам не хватает input конфигурации rollupOptions .

Следующая конфигурация создаст a my-app.js в каталоге myoutput (возможно, вам потребуется настроить путь к файлу в соответствии с вашими настройками). :

     rollupOptions: {
      input: {
        app: 'bundle.js',
      },
      output: {
        entryFileNames: 'my-[name].js',
        dir: './myoutput'
      }
    }
 

иллюстрация результата

💡 Чтобы лучше понять этот ответ, пожалуйста, прочитайте следующее предложение :

Если вы предоставите массив точек входа или имена объектов, сопоставляющие точки входа, они будут объединены в отдельные блоки вывода.

И если этот output.file параметр не используется, сгенерированные имена блоков будут следовать за этим output.entryFileNames параметром. При использовании формы объекта [name] часть имени файла будет именем файла, в то object property время как для формы массива это будет имя файла точки входа.

Обратите внимание, что при использовании формы объекта можно поместить точки входа в разные подпапки, добавив a / к имени.

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

 output.dir
Type: string
Set in build.rollupOptions
 

Предназначен для: каталога, в котором размещаются все сгенерированные фрагменты, и эта опция требуется, если сгенерировано более одного фрагмента. В противном случае вместо этого можно использовать опцию файл.

 output.file
Type: string
 

Файл для записи. Может использоваться только в том случае, если сгенерировано не более одного фрагмента.

Ответ №2:

Я думаю, ты ищешь https://vitejs.dev/guide/build.html#library-mode

И увидишь https://vitejs.dev/config/#build-lib чтобы настроить ваши потребности.