如何通过 configureWebpack 将 Node 环境变量暴露给 Vuepress 组件?
How do I expose Node environment variables via configureWebpack to Vuepress components?
我们正在使用原始的 Vuepress(0.x 分支),我们想使用 Vuepress 配置文件的 configureWebpack 方法来导出一些自定义变量。
此代码破坏了构建,因为 Webpack 自 2.0 起不允许自定义属性:
configureWebpack: (config) => {
config.env = process.env
}
错误:
WebpackOptionsValidationError: Invalid configuration object. Webpack
has been initialised using a configuration object that does not match
the API schema.
- configuration has an unknown property 'env'.
我还查看了 defining plugins 的 Webpack 文档,但问题是 configureWebpack
方法实际上并没有公开 Vuepress 使用的 webpack 实例——它直接尝试改变 webpack 选项(这是不允许的) - 但由于 webpack 实例不可用,我们不能简单地按照 webpack 希望我们的方式定义插件。
有谁知道公开可配置环境变量的正确方法,我们可以使用 Vuepress 在 Vue 组件中使用这些变量 0.x?
好吧......它与 VuePress 的构建管道进行了一些争论并跳过了 Webpack 火圈,但是由于 VuePress 使用 Webpack,我们可以简单地在我们的配置文件中要求它(我假设需要公开 VuePress 的方法Webpack 的实例,这是不正确的)。
如果使用 dotenv,您可以使自定义环境变量可用于您的组件,这有效:
// .vuepress/config.js
require('dotenv').config()
const webpack = require('webpack')
module.exports = {
configureWebpack: (config) => {
return { plugins: [
new webpack.EnvironmentPlugin({ ...process.env })
]}
}
}
注意:这将从您的 env 文件中获取 所有内容 并使其在所有组件中可用,对于生产构建只获取您需要的密钥。
我们正在使用原始的 Vuepress(0.x 分支),我们想使用 Vuepress 配置文件的 configureWebpack 方法来导出一些自定义变量。
此代码破坏了构建,因为 Webpack 自 2.0 起不允许自定义属性:
configureWebpack: (config) => {
config.env = process.env
}
错误:
WebpackOptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema. - configuration has an unknown property 'env'.
我还查看了 defining plugins 的 Webpack 文档,但问题是 configureWebpack
方法实际上并没有公开 Vuepress 使用的 webpack 实例——它直接尝试改变 webpack 选项(这是不允许的) - 但由于 webpack 实例不可用,我们不能简单地按照 webpack 希望我们的方式定义插件。
有谁知道公开可配置环境变量的正确方法,我们可以使用 Vuepress 在 Vue 组件中使用这些变量 0.x?
好吧......它与 VuePress 的构建管道进行了一些争论并跳过了 Webpack 火圈,但是由于 VuePress 使用 Webpack,我们可以简单地在我们的配置文件中要求它(我假设需要公开 VuePress 的方法Webpack 的实例,这是不正确的)。
如果使用 dotenv,您可以使自定义环境变量可用于您的组件,这有效:
// .vuepress/config.js
require('dotenv').config()
const webpack = require('webpack')
module.exports = {
configureWebpack: (config) => {
return { plugins: [
new webpack.EnvironmentPlugin({ ...process.env })
]}
}
}
注意:这将从您的 env 文件中获取 所有内容 并使其在所有组件中可用,对于生产构建只获取您需要的密钥。