як змінити шлях дистрибуції у папці dist у кутовій кліті після 'ng build'


112

Я хотів би використовувати angular-cli з ядром asp.net, і мені потрібно знати, як я можу змінити шлях до папки dist

Відповіді:


74

Ви можете оновити папку виводу в .angular-cli.json:

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

14
Чи можна помістити index.html у ./location/toYour/dist та javascript-пакети в підпапку, наприклад ./location/toYour/dist/bundles
Naveed Ahmed

1
Хтось знає про будь-які оновлення щодо подальшого налаштування outDir? css / ts / в окремих стежках
fidev

190

Більш поточним способом цього є оновлення outDirвластивості в .angular-cli.json.

ng buildАргумент команди --output-path(або -opдля стислості) по - , як і раніше підтримується також, що може бути корисно , якщо ви хочете використовувати кілька значень, ви можете зберегти їх в package.jsonякості сценаріїв НПХ.

Обережно:.angular-cli.json властивість не викликається , output-pathяк в даний час загальноприйнятий відповідь на @ cwill747 говорить. Це ng buildлише аргумент.

Це називається, outDirяк згадувалося вище, і це під appsвласністю.

.

PS

(Грудень 2017 р.)

Через 1 рік після додавання цієї відповіді хтось додав нову відповідь з фактично такою самою інформацією, і Оригінальний плакат змінив прийняту відповідь на відповідь на 1 рік, яка містить ту саму інформацію в першому рядку цього.


3
Чи можна помістити index.html у ./location/toYour/dist та JavaScript-пакети в підпапку, наприклад ./location/toYour/dist/bundles
Naveed Ahmed

10
: D PS гірко
Суніл Кумар

4
кращий PS, який я тут бачив
Френкі

він, мабуть, просуває тут свого друга, це корупція
Олександр Боровий

69

Для кутових 6+ речі трохи змінилися.

Визначте, де ng build створює файли додатків

Налаштування клієнта тепер виконується в 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

Хостинг кутового додатка у підкаталозі

Встановивши вихідний шлях, підкаже кутовий, куди слід розмістити "компільовані" файли, але проте ви змінили вихідний шлях під час запуску програми, кутовий все одно вважатиме, що програма розміщується у корені документа веб-сервера.

Щоб він працював у підкаталозі, вам доведеться встановити базовий href.

У angular.json:

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

Клієнт:

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.jsonІ src/tsconfig.json.

Я хотів, щоб моя папка dist була поза папкою кутового проекту. Якщо я також не змінив налаштування src/tsconfig.json, Angular CLI видав би попередження, коли я будував проект.

Ось найважливіші рядки ...

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

І ...

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

2
Дивовижно! Оновлення для cli 7x, вищезазначене робиться в angular.jsonі поле є outputPath( tsconfig налаштування вище залишається тим же). Hth
EdSF

17

Остерігайтеся: правильна відповідь наведена нижче. Це більше не працює

Створіть файл, названий .ember-cliу вашому проекті, і додайте до нього цей вміст:

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

9

Для цього кутовий 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. Версія:angular-cli: 1.0.0-beta.21
NinjaFart

Від Angular CLI Wiki : outDir (рядок): вихідний каталог для результатів збірки. За замовчуванням - dist /.
hbthanki

@hbthanki Це перемикач cli, а не середовище,
власник

9

для сторінок github, які я використовую

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

Це те, що копіює вихід у папку "Документи": --output-path=docs


2

Іншим варіантом було б встановити шлях веб-коріння до папки кутового кліпу. У програмі Program.cs під час налаштування WebHostBuilder просто скажіть

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

або яким би не був шлях до вашого дистрикту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.