'ng build'の後にangular-cliでdist-folderパスを変更する方法


112

私はasp.netコアでangular-cliを使用したいのですが、dist フォルダのパスを変更する方法を知る必要があります

回答:


74

.angular-cli.jsonの出力フォルダーを更新できます。

"outDir": "./location/toYour/dist"

14
index.htmlを./location/toYour/distに入れ、javascriptバンドルをサブフォルダーに入れることはできますか。例:./location
toYour/dist/

1
outDirをさらにカスタマイズする際の更新を知っている人はいますか?css / ts /が別のパスにある
fidev 2018

190

これのより現在の方法は、でoutDirプロパティを更新することです.angular-cli.json

ng buildコマンドの引数--output-path(または-op略して)まだあなたが複数の値をしたい場合、あなたはあなたに保存することができ便利です、また、サポートされているpackage.jsonとして、NPMスクリプト。

用心:.angular-cli.jsonプロパティが呼び出されないoutput-pathように@ cwill747により、現在受け入れ答えと言います。それはng build唯一の議論です。

outDir上記のように呼ばれ、appsプロパティの下にあります。

PS

(2017年12月)

この回答を追加してから1年後、誰かが本質的に同じ情報を使用して新しい回答を追加し、元の投稿者が承認済みの回答を、この回答の1行目に同じ情報を含む1年後期の回答に変更しました。


3
index.htmlを./location/toYour/distに配置し、JavaScriptバンドルをサブフォルダーに配置することは可能ですか?./location/toYour
dist/

10
:D PSは苦い
Sunil Kumar

4
私がここで見た中で最高のPS
フレンキー

彼はおそらくここで彼の友人を宣伝しています、これは腐敗です
アレクサンダーボロボイ

69

Angular 6以降では、状況が少し変わりました。

ngビルドがアプリファイルを生成する場所を定義する

Cliのセットアップは、ワークスペースのルートディレクトリのangular.json(.angular-cli.jsonに置き換えられました)で行われます。デフォルトのangular.jsonの出力パスは次のようになります(無関係な行は削除されます)。

{
  "projects": {
    "my-app-name": {
    "architect": {
      "options": {
         "outputPath": "dist/my-app-name",

明らかに、これによりWORKSPACE / dist / my-app-nameにアプリが生成されます。別のディレクトリが必要な場合は、outputPathを変更します。

コマンドライン引数を使用して、出力パスを上書きできます(CIジョブなど)。

ng build -op dist/example
ng build --output-path=dist/example

Sa https://github.com/angular/angular-cli/wiki/build

サブディレクトリでAngularアプリをホストする

出力パスを設定すると、「コンパイル済み」ファイルをどこに配置するかがAngularに通知されますが、出力パスを変更しても、AngleはアプリがWebサーバーのドキュメントルートでホストされていると想定します。

サブディレクトリで機能させるには、ベースhrefを設定する必要があります。

angular.jsonでは:

{
  "projects": {
    "my-app-name": {
    "architect": {
      "options": {
         "baseHref": "/my-folder/",

Cli:

ng build --base-href=/my-folder/

ビルド時にアプリがホストされる場所がわからない場合は、生成されたindex.htmlのベースタグを変更できます。

dockerコンテナーでこれを行う方法の例を次に示します。

entrypoint.sh

if [ -n "${BASE_PATH}" ]
then
  files=( $(find . -name "index.html") )
  cp -n "${files[0]}" "${files[0]}.org"
  cp "${files[0]}.org" "${files[0]}"
  sed -i "s*<base href=\"/\">*<base href=\"${BASE_PATH}\">*g" "${files[0]}"
fi


17

私のために働いた唯一の事は変更したoutDirの両方ででangular-cli.jsonsrc/tsconfig.json

私はdistフォルダをangularプロジェクトフォルダの外に置きたかったです。src/tsconfig.json同様に設定を変更しなかった場合、プロジェクトをビルドするたびにAngular CLIが警告をスローします。

ここに最も重要な行があります...

// angular-cli.json
{
  ...
  "apps": [
    {
      "outDir": "../dist",
      ...
    }
  ],
  ...
}

そして...

// tsconfig.json
{
  "compilerOptions": {
    "outDir": "../../dist/out-tsc",
    ...
  }
}

2
驚くばかり!の更新cli 7x、上記はで行われangular.json、フィールドはoutputPathtsconfig 上記の調整は同じままです)。第H
EdSF

17

注意:正解は以下のとおりです。これはもう機能しません

.ember-cliプロジェクトで呼び出されるファイルを作成し、それに次のコンテンツを含めます。

{
   "output-path": "./location/to/your/dist/"
}

9

Angular CLIはこれを行うために環境ファイルを使用するようになりました。

まず、environmentsセクションをangular-cli.json

何かのようなもの :

{
  "apps": [{
      "environments": {
        "prod": "environments/environment.prod.ts"
      }
    }]
}

次に、環境ファイル(environments/environment.prod.tsこの場合)内に次のようなものを追加します。

export const environment = {
  production: true,
  "output-path": "./whatever/dist/"
};

今あなたが走るとき:

ng build --prod

./whatever/dist/フォルダに出力されます。


1
最良の答えのように見えますが、Angular CLIはまだdist-folderにファイルを公開しています。バージョン:angular-cli: 1.0.0-beta.21
NinjaFart

Angular CLI Wikiから:outDir(文字列):ビルド結果の出力ディレクトリ。デフォルトはdist /です。
hbthanki 2018

@hbthankiそれは環境ファイルのjsonプロパティではなくcliスイッチです
swestner

9

使用するgithubページ

ng build --prod --base-href "https://<username>.github.io/<RepoName>/" --output-path=docs

これは、出力をdocsフォルダーにコピーするものです。 --output-path=docs


2

別のオプションは、webrootパスをangular cli distフォルダーに設定することです。Program.csでWebHostBuilderを構成するときに、

.UseWebRoot(Directory.GetCurrentDirectory() + "\\Frontend\\dist")

または、dist dirへのパスは何でもかまいません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.