故事
我正在开发AWS Lambda函数,并使用webpack
编译代码。
我已经阅读了一些文章,似乎process.env
变量在编译过程中被自动替换了。虽然很酷,但我还是想禁止这种行为。
为什么?
因为我正在使用AWS Lambda仪表板传递环境变量。
Webpack配置
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')
}
}
问题
在process.env
编译期间是否可以禁止替换webpack
变量的行为?
如果是,请帮助我达到此效果。
答案 0 :(得分:1)
mode
option,可以替换process.env.NODE_ENV
:
发展
在DefinePlugin上设置process.env.NODE_ENV以进行价值开发。 启用NamedChunksPlugin和NamedModulesPlugin。
生产
在DefinePlugin上将process.env.NODE_ENV设置为值生产。启用 FlagDependencyUsagePlugin,FlagIncludedChunksPlugin, ModuleConcatenationPlugin,NoEmitOnErrorsPlugin, OccurrenceOrderPlugin,SideEffectsFlagPlugin和TerserPlugin。
无
退出任何默认优化选项
如果DefinePlugin
对process.env.NODE_ENV
的影响不理想,则列出的插件应在没有DefinePlugin
的情况下应用,如文档production
和{{3 }}模式。
答案 1 :(得分:0)
我可以通过添加以下内容来避免在vue.config.js中出现此行为:
const Config = require('webpack-chain');
const config = new Config();
module.exports = {
chainWebpack: config => {
config.plugins.delete("define")
},
configureWebpack: {
...,
},
.....
}
答案 2 :(得分:0)
将TextWatcher sumCalculator = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (!TextUtils.isEmpty(tipCash.getText().toString().trim()) || !TextUtils.isEmpty(tipCard.getText().toString().trim())) {
try {
int cashValue = TextUtils.isEmpty(tipCash.getText()) ? 0 : Integer.parseInt(tipCash.getText().toString().trim());
int cardValue = TextUtils.isEmpty(tipCard.getText()) ? 0 : Integer.parseInt(tipCard.getText().toString().trim());
int sumValue = cashValue + cardValue;
tipSum.setText(String.valueOf(sumValue));
}catch (NumberFormatException e ){}
Toast.makeText(getActivity(),"Too big number",Toast.LENGTH_SHORT).show();
tipSum.setText("sum");
} else {
tipSum.setText("sum");
}
}
@Override
public void afterTextChanged(Editable s) {
}
};
tipCash.addTextChangedListener(sumCalculator);
tipCard.addTextChangedListener(sumCalculator);
设置为optimization.nodeEnv
发件人:
https://webpack.js.org/configuration/optimization/#optimizationnodeenv
optimization.nodeEnv
布尔值=假字符串
告诉webpack将process.env.NODE_ENV设置为给定的字符串值。 Optimization.nodeEnv>除非设置为false,否则使用DefinePlugin。如果设置了optimization.nodeEnv,则默认将其设置为mode,否则返回到“ production”。