webpack.config.js 在寓言中混合本地和共享配置
Mixing local and shared config in fable with webpack.config.js
对于 Fable 和 webpack.config.js
,我遇到的情况是 devServerPort
对于某些本地用户而言与 CI 系统使用的端口不同。我想知道是否有一种标准方法或内置方法来处理本地配置,比如 webpack.local.config.js
只覆盖一个特定值。
然后,每个程序员都有他或她自己的本地配置,该配置不会进入存储库,您可以在其中覆盖默认 webpack.config.js
CONFIG
变量中指定的任何共享值.
简单的替代方法是使用不同的完整配置,或者在每次回购同步后仅在本地更新端口号,但这显然并不理想。
// example of a default config:
var CONFIG = {
// The tags to include the generated JS and CSS will be automatically injected in the HTML template
// See https://github.com/jantimon/html-webpack-plugin
indexHtmlTemplate: './src/Client/index.html',
fsharpEntry: './src/Client/Client.fsproj',
outputDir: './deploy/public',
assetsDir: './src/Client/public',
devServerPort: 8080, // some users cannot use port 8080 and want a different local config
devServerProxy: {
// ... etc
这个问题最初是在 F# Slack 上提出的,但没有收到答案,因此在此处发布以供更广泛的受众使用。
确实,一种方法是为生产环境和开发环境设置不同的配置。您可以将公共部分放在另一个文件中,然后使用 webpack-merge.
所以你会喜欢:
wepback.common.js
const HtmlWebpackPlugin = require("html-webpack-plugin");
...
module.exports = {
entry: { ... },
plugins: [ ... ],
module: { ... },
};
webpack.development.js
const merge = require("webpack-merge");
const commonConfiguration = require("./webpack.common");
...
module.exports = merge(commonConfiguration, {
mode: "development",
...
plugins: [
new webpack.HotModuleReplacementPlugin(),
...
],
devServer: {
hot: true,
...
},
...
});
webpack.production.js
const merge = require("webpack-merge");
const commonConfiguration = require("./webpack.common");
...
module.exports = merge(commonConfiguration, {
mode: "production",
optimization: {
minimizer: [ new MinifyPlugin() ]
},
...
plugins: [
new CleanWebpackPlugin(),
...
],
...
});
其他事情取决于你的构建脚本,但基本上你可以 运行 webpack
vs webpack-dev-server
根据你所在的位置,你可以使用 environment variables 等等上。
对于 Fable 和 webpack.config.js
,我遇到的情况是 devServerPort
对于某些本地用户而言与 CI 系统使用的端口不同。我想知道是否有一种标准方法或内置方法来处理本地配置,比如 webpack.local.config.js
只覆盖一个特定值。
然后,每个程序员都有他或她自己的本地配置,该配置不会进入存储库,您可以在其中覆盖默认 webpack.config.js
CONFIG
变量中指定的任何共享值.
简单的替代方法是使用不同的完整配置,或者在每次回购同步后仅在本地更新端口号,但这显然并不理想。
// example of a default config:
var CONFIG = {
// The tags to include the generated JS and CSS will be automatically injected in the HTML template
// See https://github.com/jantimon/html-webpack-plugin
indexHtmlTemplate: './src/Client/index.html',
fsharpEntry: './src/Client/Client.fsproj',
outputDir: './deploy/public',
assetsDir: './src/Client/public',
devServerPort: 8080, // some users cannot use port 8080 and want a different local config
devServerProxy: {
// ... etc
这个问题最初是在 F# Slack 上提出的,但没有收到答案,因此在此处发布以供更广泛的受众使用。
确实,一种方法是为生产环境和开发环境设置不同的配置。您可以将公共部分放在另一个文件中,然后使用 webpack-merge.
所以你会喜欢:
wepback.common.js
const HtmlWebpackPlugin = require("html-webpack-plugin");
...
module.exports = {
entry: { ... },
plugins: [ ... ],
module: { ... },
};
webpack.development.js
const merge = require("webpack-merge");
const commonConfiguration = require("./webpack.common");
...
module.exports = merge(commonConfiguration, {
mode: "development",
...
plugins: [
new webpack.HotModuleReplacementPlugin(),
...
],
devServer: {
hot: true,
...
},
...
});
webpack.production.js
const merge = require("webpack-merge");
const commonConfiguration = require("./webpack.common");
...
module.exports = merge(commonConfiguration, {
mode: "production",
optimization: {
minimizer: [ new MinifyPlugin() ]
},
...
plugins: [
new CleanWebpackPlugin(),
...
],
...
});
其他事情取决于你的构建脚本,但基本上你可以 运行 webpack
vs webpack-dev-server
根据你所在的位置,你可以使用 environment variables 等等上。