3

私は ES6 AngularJS プロジェクトに取り組んでおり、webpack を使用してすべてを にバンドルしていdist/app.jsます。

私が使用している CI/CD スタックは SCM - Jenkins - Octopus です。

  1. コードの更新がリポジトリにプッシュされる

  2. Jenkins はリポジトリのクローンを作成し、 を呼び出しnpm installて、1 つのエントリ ポイントからすべてをバンドルおよび縮小するためgulpに使用します。gulp-webpackdist/app.js

  3. ビルド後、Jenkins はアプリを nuget pkg にパッケージ化し、アプリが IIS にデプロイされる Octopus Deploy にプッシュします。

octopus プロジェクトは複数の環境で動作しており、環境に応じていくつかの構成変数を置き換える方法が必要です。そのために、Octopus は「ファイル内の変数を置換する」展開手順を提供します。

モジュールバンドラーと ES6 を使用しなかったときは、いくつかの角度定数を設定する構成ファイルがあり、それを使用していました。私はconfig.jsファイルとファイルを持っていconfig.template.jsます。Octopus はconfig.template.jsファイル内の変数を置き換え、私はそれをデプロイ後の変数に置き換えるように設定しましconfig.jsconfig.template.js

ただし、今は使用するconfig.js必要のある変数をエクスポートするプレーンを使用しているだけで、それを関連するファイル (Angular コントローラー関数を含むファイルなど) にインポートします。

このセットアップでは、以前と同じ方法で置換を行うことはできませconfig.jsdist/app.js。これを達成する方法についての戦略を考え出すのを手伝ってくれる人はいますか? ビルドの前にスワップしてから、バンドル全体の変数を Octopus に置き換えさせることを考えていましたconfig.jsが、それはかなり非効率的です。config.template.jsapp.js

4

1 に答える 1

4

私たちのビルド プロセスにも同様のことがあり、同様に当惑しました。私たちは、トークンが置き換えられたかどうかを判断するために JS 自体を使用するコード内トークン置き換えソリューションに落ち着き、ローカル開発 (デプロイ前) で機能するようにしました。

次のようなコードを追加しました。

// config --------------------------
(function () {
    // These values will be replaced by Octopus during deployment.
    var configuredApiUrl = "#{Api:Url}";
    apiUrl = (configuredApiUrl[0] !== "#") ?
        configuredApiUrl : "http://api.local/v1";        
})();

次に、出力ファイルに変数置換を設定します。

これが役立つことを願っています!

于 2016-07-08T17:34:20.223 に答える