[解決済み] Webpackを使った環境による条件付きビルド
2022-11-27 14:43:52
質問
開発用にモックなどを作っているのですが、配布するビルドファイルが肥大化しないようにしたいです。
RequireJSでは、プラグインファイルで設定を渡し、それに基づいて条件付きで物事を要求することができます。
webpackでは、これを行う方法はないようです。まず、ある環境の実行時設定を作成するために、私はこれまで resolve.alias を使って、環境に応じて require を再指定しています。
// All settings.
var all = {
fish: 'salmon'
};
// `envsettings` is an alias resolved at build time.
module.exports = Object.assign(all, require('envsettings'));
そして、webpack の設定を作成する際に、動的にどのファイル
envsettings
が指すファイルを動的に指定できます (つまり
webpackConfig.resolve.alias.envsettings = './' + env
).
しかし、私は次のようなことをしたいのです。
if (settings.mock) {
// Short-circuit ajax calls.
// Require in all the mock modules.
}
しかし、明らかにモックでない環境では、これらのモックファイルでビルドしたくありません。
resolve.aliasを使用して手動でこれらのすべてのrequireをスタブファイルに再指定することができるかもしれません - しかし、より厄介でないと感じる方法はありますか?
どのようにそれを行うことができます任意のアイデア?ありがとうございます。
どのように解決するのですか?
あなたは 定義プラグイン .
webpackのビルドファイルで、以下のような簡単な操作で使っています。
env
は設定のオブジェクトをエクスポートするファイルへのパスです。
// Webpack build config
plugins: [
new webpack.DefinePlugin({
ENV: require(path.join(__dirname, './path-to-env-files/', env))
})
]
// Settings file located at `path-to-env-files/dev.js`
module.exports = { debug: true };
そして、あなたのコードに次のように記述します。
if (ENV.debug) {
console.log('Yo!');
}
この条件が偽の場合、ビルドファイルからこのコードを削除します。動作中の Webpack のビルドの例はこちら .
関連
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] jQueryを使ってドロップダウンリスト(セレクトボックス)から選択されたテキストを取得する
-
[解決済み] Javascriptで文字列の最後の文字を切り取るにはどうしたらいいですか?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] JavaScriptでドロップダウンリストの選択値を取得する
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] Node.jsで環境変数を読み込む
-
[解決済み] webpackで環境依存の変数を渡す
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSのDateからDay名
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする