come cambiare il percorso della cartella dist in angular-cli dopo 'ng build'


112

Vorrei usare angular-cli con asp.net core e ho bisogno di sapere come posso cambiare il percorso della cartella dist

Risposte:


74

Puoi aggiornare la cartella di output in .angular-cli.json:

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

14
È possibile inserire index.html in ./location/toYour/dist e javascript bundle in una sottocartella, ad esempio ./location/toYour/dist/bundles
Naveed Ahmed

1
Qualcuno sa di eventuali aggiornamenti sulla personalizzazione di outDir ulteriormente? css / ts / in percorsi separati
fidev

190

Il modo più attuale per farlo è aggiornare la outDirproprietà in .angular-cli.json.

L' ng buildargomento del comando --output-path(o -opin breve) è ancora supportato, il che può essere utile se vuoi più valori, puoi salvarli nei tuoi package.jsonscript come npm.

Attenzione: la .angular-cli.jsonproprietà NON viene chiamata output-pathcome dice la risposta attualmente accettata da @ cwill747 . Questo è ng buildsolo l' argomento.

Si chiama outDircome accennato in precedenza ed è sotto la appsproprietà.

.

PS

(Dicembre 2017)

1 anno dopo aver aggiunto questa risposta , qualcuno ha aggiunto una nuova risposta con essenzialmente le stesse informazioni e il poster originale ha cambiato la risposta accettata nella risposta con 1 anno di ritardo contenente le stesse informazioni nella prima riga di questa.


3
È possibile inserire index.html in ./location/toYour/dist e pacchetti JavaScript in una sottocartella, ad esempio ./location/toYour/dist/bundles
Naveed Ahmed

10
: D il PS è amaro
Sunil Kumar

4
miglior PS che ho visto qui
Frenkey

probabilmente sta promuovendo il suo amico qui, questa è una corruzione
Alexander Borovoi

69

Per Angular 6+ le cose sono leggermente cambiate.

Definisci dove ng build genera i file dell'app

L'impostazione di Cli ora viene eseguita in angular.json (sostituito .angular-cli.json) nella directory principale dell'area di lavoro. Il percorso di output in angular.json predefinito dovrebbe essere simile a questo (righe irrilevanti rimosse):

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

Ovviamente, questo genererà la tua app in WORKSPACE / dist / my-app-name. Modifica outputPath se preferisci un'altra directory.

È possibile sovrascrivere il percorso di output utilizzando gli argomenti della riga di comando (ad esempio per i lavori CI):

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

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

Hosting di app angolari in sottodirectory

L'impostazione del percorso di output, dirà ad angular dove posizionare i file "compilati" ma comunque si modifichi il percorso di output, quando si esegue l'app, angular presumerà comunque che l'app sia ospitata nella radice dei documenti del server web.

Per farlo funzionare in una sottodirectory, dovrai impostare il valore href di base.

In angular.json:

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

Cli:

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

Se non sai dove sarà ospitata l'app in fase di compilazione, puoi modificare il tag di base in index.html generato.

Ecco un esempio di come lo facciamo nel nostro container 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

L'unica cosa che ha funzionato per me è stata cambiare outDirsia in angular-cli.jsonAND src/tsconfig.json.

Volevo la mia cartella dist fuori dalla cartella del progetto angolare. Se non avessi modificato anche l'impostazione src/tsconfig.json, la CLI di Angular lanciava avvisi ogni volta che costruisco il progetto.

Ecco le righe più importanti ...

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

E ...

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

2
Eccezionale! Aggiornamento per cli 7x, quanto sopra viene eseguito angular.jsone il campo è outputPath(la tsconfig regolazione sopra rimane la stessa). Hth
EDSF

17

Attenzione: la risposta corretta è di seguito. Non funziona più

Crea un file chiamato .ember-clinel tuo progetto e includi in esso questi contenuti:

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

9

La CLI angolare ora utilizza i file di ambiente per farlo.

Innanzitutto, aggiungi una environmentssezione al fileangular-cli.json

Qualcosa di simile a :

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

E poi all'interno del file di ambiente ( environments/environment.prod.tsin questo caso), aggiungi qualcosa come:

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

ora quando corri:

ng build --prod

verrà prodotto nella ./whatever/dist/cartella.


1
Sembra la risposta migliore, ma Angular CLI pubblica ancora i miei file nella cartella dist. Versione:angular-cli: 1.0.0-beta.21
NinjaFart

Da Angular CLI Wiki : outDir (stringa): la directory di output per i risultati della compilazione. L'impostazione predefinita è dist /.
hbthanki

@hbthanki Quello è l'interruttore cli, non la proprietà json del file di ambiente
swestner

9

per le pagine GitHub che uso

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

Questo è ciò che copia l'output nella cartella dei documenti: --output-path=docs


2

Un'altra opzione sarebbe quella di impostare il percorso webroot nella cartella angular cli dist. Nel tuo Program.cs quando configuri il WebHostBuilder dì solo

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

o qualunque sia il percorso per la tua dist dir.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.