![](/img/trans.png)
[英]how do I make webpack not convert process.env variables to their values during build?
[英]How to forbid replacing process.env variables during compilation in webpack?
故事
我正在開發 AWS Lambda 函數並使用webpack
編譯代碼。
我讀過一些文章,似乎process.env
變量在編譯process.env
被自動替換。 雖然很酷,但我想禁止這種行為。
為什么?
因為我使用 AWS Lambda 儀表板傳遞環境變量。
網絡包配置
const nodeExternals = require('webpack-node-externals')
const webpack = require('webpack')
const path = require('path')
module.exports = {
target: 'node',
entry: path.resolve(__dirname, 'index.ts'),
externals: [nodeExternals()],
devtool: 'inline-source-map',
mode: 'production',
module: {
rules: [{
test: /\.tsx?$/,
use: [{
loader: 'ts-loader',
options: {
experimentalWatchApi: true,
},
}],
}]
},
plugins: [],
resolve: {
extensions: ['.tsx', '.ts', '.js']
},
output: {
filename: 'index.js',
libraryTarget: 'commonjs',
path: path.resolve(__dirname, 'dist')
}
}
題
是否可以禁止在webpack
編譯期間替換process.env
變量的行為? 如果是,請幫我實現這個效果。
故事
我正在開發 AWS Lambda 函數並使用webpack
編譯代碼。
我讀過一些文章,似乎process.env
變量在編譯process.env
被自動替換。 雖然很酷,但我想禁止這種行為。
為什么?
因為我使用 AWS Lambda 儀表板傳遞環境變量。
網絡包配置
const nodeExternals = require('webpack-node-externals')
const webpack = require('webpack')
const path = require('path')
module.exports = {
target: 'node',
entry: path.resolve(__dirname, 'index.ts'),
externals: [nodeExternals()],
devtool: 'inline-source-map',
mode: 'production',
module: {
rules: [{
test: /\.tsx?$/,
use: [{
loader: 'ts-loader',
options: {
experimentalWatchApi: true,
},
}],
}]
},
plugins: [],
resolve: {
extensions: ['.tsx', '.ts', '.js']
},
output: {
filename: 'index.js',
libraryTarget: 'commonjs',
path: path.resolve(__dirname, 'dist')
}
}
問題
是否可以禁止在webpack
編譯期間替換process.env
變量的行為? 如果是,請幫我實現這個效果。
故事
我正在開發 AWS Lambda 函數並使用webpack
編譯代碼。
我讀過一些文章,似乎process.env
變量在編譯process.env
被自動替換。 雖然很酷,但我想禁止這種行為。
為什么?
因為我使用 AWS Lambda 儀表板傳遞環境變量。
網絡包配置
const nodeExternals = require('webpack-node-externals')
const webpack = require('webpack')
const path = require('path')
module.exports = {
target: 'node',
entry: path.resolve(__dirname, 'index.ts'),
externals: [nodeExternals()],
devtool: 'inline-source-map',
mode: 'production',
module: {
rules: [{
test: /\.tsx?$/,
use: [{
loader: 'ts-loader',
options: {
experimentalWatchApi: true,
},
}],
}]
},
plugins: [],
resolve: {
extensions: ['.tsx', '.ts', '.js']
},
output: {
filename: 'index.js',
libraryTarget: 'commonjs',
path: path.resolve(__dirname, 'dist')
}
}
問題
是否可以禁止在webpack
編譯期間替換process.env
變量的行為? 如果是,請幫我實現這個效果。
故事
我正在開發 AWS Lambda 函數並使用webpack
編譯代碼。
我讀過一些文章,似乎process.env
變量在編譯process.env
被自動替換。 雖然很酷,但我想禁止這種行為。
為什么?
因為我使用 AWS Lambda 儀表板傳遞環境變量。
網絡包配置
const nodeExternals = require('webpack-node-externals')
const webpack = require('webpack')
const path = require('path')
module.exports = {
target: 'node',
entry: path.resolve(__dirname, 'index.ts'),
externals: [nodeExternals()],
devtool: 'inline-source-map',
mode: 'production',
module: {
rules: [{
test: /\.tsx?$/,
use: [{
loader: 'ts-loader',
options: {
experimentalWatchApi: true,
},
}],
}]
},
plugins: [],
resolve: {
extensions: ['.tsx', '.ts', '.js']
},
output: {
filename: 'index.js',
libraryTarget: 'commonjs',
path: path.resolve(__dirname, 'dist')
}
}
問題
是否可以禁止在webpack
編譯期間替換process.env
變量的行為? 如果是,請幫我實現這個效果。
雖然將optimization.nodeEnv
設置為false
對NODE_ENV
變量有效,但它不適用於所有環境變量,並且不會阻止process.env
在編譯代碼中被替換。
我在后端使用 Webpack,因此在運行時訪問很重要。
由於在編譯后的代碼中似乎沒有保留process.env
的官方方法,因此我找到了這個對我有用的解決方法。
我必須定義一個新的全局變量,我稱之為ENVIRONMENT
,它將在編譯期間被process.env
替換。
new webpack.DefinePlugin({
ENVIRONMENT: 'process.env',
}),
在我的代碼中,我會像訪問普通對象一樣訪問它:
ENVIRONMENT.DATABASE_URL
以上編譯為process.env.DATABASE_URL
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.