'ng build'den sonra dist-klasör yolunu açısal-uçta nasıl değiştirebilirim?


112

Asp.net çekirdeği ile açısal-cli kullanmak istiyorum ve dist klasörünün yolunu nasıl değiştirebileceğimi bilmem gerekiyor

Yanıtlar:


74

Çıktı klasörünü .angular-cli.json içinde güncelleyebilirsiniz:

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

14
İndex.html'yi ./location/toYour/dist ve javascript paketlerini bir alt klasöre, örneğin ./location/toYour/dist/bundles
Naveed Ahmed

1
OutDir'i daha da özelleştirme konusunda herhangi bir güncelleme bilen var mı? css / ts / ayrı yollarda
fidev

190

Bunun daha güncel yolu, outDirmülkü içinde güncellemektir .angular-cli.json.

ng buildKomut argümanı --output-path(veya -opBirden çok değer istediğinizde yararlı olabilir hala da desteklenmektedir kısaca), sizin onları kaydedebilirsiniz package.jsonolarak npm komut.

Dikkat:.angular-cli.json özellik olarak adlandırılan DEĞİLDİR output-pathgibi @ cwill747 tarafından şu anda kabul gören yanıt diyor. Bu ng buildsadece argüman.

outDirYukarıda belirtildiği gibi denir ve bir appsmülkün altında .

.

PS

(Aralık 2017)

Bu yanıtı ekledikten 1 yıl sonra , birisi temelde aynı bilgileri içeren yeni bir yanıt ekledi ve Orijinal Poster, kabul edilen yanıtı, bunun ilk satırında aynı bilgileri içeren 1 yıl geç yanıt olarak değiştirdi.


3
İndex.html'yi ./location/toYour/dist içine ve JavaScript paketlerini bir alt klasöre, örneğin ./location/toYour/dist/bundles
Naveed Ahmed

10
: D PS acı
Sunil Kumar

4
Burada gördüğüm en iyi PS
Frenkey

muhtemelen arkadaşını burada terfi
ettiriyor

70

Angular 6+ için işler biraz değişti.

Ng derlemesinin uygulama dosyalarını oluşturduğu yeri tanımlama

Cli kurulumu artık yapılır angular.json çalışma alanı kök dizininde (yerini .angular-cli.json). Default angular.json'daki çıktı yolu şöyle görünmelidir (alakasız satırlar kaldırıldı):

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

Açıkçası, bu uygulamanızı WORKSPACE / dist / my-app-name içinde oluşturacaktır. Başka bir dizini tercih ediyorsanız outputPath'i değiştirin.

Komut satırı argümanlarını kullanarak çıktı yolunun üzerine yazabilirsiniz (örneğin CI işleri için):

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

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

Açısal uygulamayı alt dizinde barındırma

Çıktı yolunu ayarlamak, "derlenmiş" dosyaların nereye yerleştirileceğini açısal olarak söyleyecektir, ancak uygulamayı çalıştırırken çıktı yolunu değiştirseniz de, açısal, uygulamanın web sunucusunun belge kök dizininde barındırıldığını varsayacaktır.

Bir alt dizinde çalışmasını sağlamak için temel href ayarlamanız gerekir.

Angular.json'da:

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

cli:

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

Derleme zamanında uygulamanın nerede barındırılacağını bilmiyorsanız, oluşturulan index.html'de temel etiketi değiştirebilirsiniz.

Docker konteynerimizde bunu nasıl yaptığımıza bir örnek:

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

Benim için işe yarayan tek şey outDirhem angular-cli.jsonAND'de değişiklik yapmaktı src/tsconfig.json.

Dağıtım klasörümün açısal proje klasörünün dışında olmasını istedim. Ayarı da değiştirmezsem src/tsconfig.json, Angular CLI projeyi her inşa ettiğimde uyarılar atardı.

İşte en önemli satırlar ...

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

Ve ...

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

2
Müthiş! İçin güncelleme cli 7x, içinde yapılır angular.jsonve alan outputPath( tsconfig yukarıdaki ayarlama aynı kalır). Hth
EdSF

17

Dikkat: Doğru cevap aşağıdadır. Bu artık çalışmıyor

.ember-cliProjenizde çağrılan bir dosya oluşturun ve aşağıdaki içerikleri ekleyin:

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

9

Angular CLI artık bunu yapmak için ortam dosyalarını kullanıyor.

Önce, bir environmentsbölüm ekleyinangular-cli.json

Gibi bir şey :

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

Ve sonra ortam dosyasının içine ( environments/environment.prod.tsbu durumda), şuna benzer bir şey ekleyin:

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

şimdi koştuğunda:

ng build --prod

./whatever/dist/klasöre çıktı verecektir .


1
En iyi cevap gibi görünüyor, ancak Angular CLI hala dosyalarımı dist klasöründe yayınlıyor. Sürüm:angular-cli: 1.0.0-beta.21
NinjaFart

Eğik CLI itibaren Wiki : OutDir (dize): yapı sonuçlar için çıkış dizinine. Varsayılan dist /.
hbthanki

@hbthanki Bu cli anahtarı, ortam dosyası değil json özelliği
swestner

9

Kullandığım github sayfaları için

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

Bu, çıktıyı docs klasörüne kopyalayan şeydir: --output-path=docs


2

Diğer bir seçenek, webroot yolunu açısal cli dist klasörüne ayarlamak olabilir. Program.cs dosyanızda WebHostBuilder'ı yapılandırırken şunu söyleyin:

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

veya uzak dizinize giden yol ne olursa olsun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.