Как использовать configureWebpack, чтобы сделать пользовательские переменные доступными для компонентов? - PullRequest
0 голосов
/ 07 декабря 2018

Мы используем исходный Vuepress (ветвь 0.x) и хотим использовать метод configureWebpack файла конфигурации Vuepress для экспорта некоторых пользовательских переменных.

Этот код ломаетсборка, поскольку Webpack не допускает пользовательских свойств с версии 2.0:

configureWebpack: (config) => {
  config.env = process.env
}

Ошибка:

WebpackOptionsValidationError: Недопустимый объект конфигурации.Webpack был инициализирован с использованием объекта конфигурации, который не соответствует схеме API.- у конфигурации есть неизвестное свойство 'env'.

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

Кто-нибудь знает правильный способ выставления, скажем, настраиваемых переменных среды, которые мы можем использовать в наших компонентах Vue, используя Vuepress 0.x?

1 Ответ

0 голосов
/ 10 декабря 2018

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

Если вы используете dotenv, вы можете сделать собственные переменные среды доступными для ваших компонентов, это работает:

// .vuepress/config.js
require('dotenv').config()
const webpack = require('webpack')

module.exports = {
  configureWebpack: (config) => {
    return { plugins: [
      new webpack.EnvironmentPlugin({ ...process.env })
    ]}
  }
}

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

...