Подтвердить что ты не робот

angular-cli где находится файл webpack.config.js - новый angular6 не поддерживает ng eject

ОБНОВЛЕНИЕ: декабрь 2018 года (см. Ответ "Аникет")

С Angular CLI 6 вам нужно использовать компоновщики, так как ng eject устарела и скоро будет удалена в 8.0

ОБНОВЛЕНИЕ: июнь 2018: Angular 6 не поддерживает извлечение **

ОБНОВЛЕНИЕ: февраль 2017: используйте ng eject

ОБНОВЛЕНИЕ: ноябрь 2016: angular-cli теперь использует только веб-пакеты. Вам нужно только нормально установить с помощью npm install -g angular-cli. "Мы изменили систему сборки между beta.10 и beta.14, с SystemJS на Webpack.", Но на самом деле я использую angular-cli только для того, чтобы включить структуру и папки, а затем больше, я использую конфигурацию webpack вручную

Я установил угловой Cli с этим:

npm install -g [email protected]

Когда я работал с angular1 и веб-пакетом, я использовал для изменения файла "webpack.config.js" выполнение всех задач и плагинов, но я не вижу в этом проекте, созданном с angular-cli, кто это работает. это волшебство?

Я вижу, что Webpack работает, когда я:

ng serve 

"Version: webpack 2.1.0-beta.18"

но я не понимаю, как работает Angular-Cli конфигурации...

4b9b3361

Ответ 1

С Angular CLI 6 вам нужно использовать компоновщики, так как ng eject устарела и скоро будет удалена в 8.0. То, что он говорит, когда я пытаюсь сделать NG Eject

enter image description here

Вы можете использовать пакет angular-builders (https://github.com/meltedspark/angular-builders) для предоставления своей пользовательской конфигурации веб-пакета.

Я попытался обобщить все в одном посте на своем блоге - Как настроить конфигурацию сборки с помощью пользовательской конфигурации веб-пакета в Angular CLI 6

но по сути вы добавляете следующие зависимости -

  "devDependencies": {
    "@angular-builders/custom-webpack": "^7.0.0",
    "@angular-builders/dev-server": "^7.0.0",
    "@angular-devkit/build-angular": "~0.11.0",

В angular.json внесите следующие изменения -

  "architect": {
    "build": {
      "builder": "@angular-builders/custom-webpack:browser",
      "options": {
        "customWebpackConfig": {"path": "./custom-webpack.config.js"},

Обратите внимание на изменения в компоновщике и новую опцию customWebpackConfig. Также изменить

    "serve": {
      "builder": "@angular-builders/dev-server:generic",

Обратите внимание на изменение в строителе снова для цели подачи. Опубликовав эти изменения, вы можете создать файл custom-webpack.config.js в той же корневой директории и добавить туда свою конфигурацию webpack.

Однако, в отличие от предоставленной здесь конфигурации ng eject, она будет объединена с конфигурацией по умолчанию, поэтому просто добавьте Studd, который вы хотите отредактировать/добавить.

Ответ 2

Хороший способ изгнать webpack.config.js из angular -cli. Просто запустите:

$ ng eject

Это создаст файл webpack.config.js в корневой папке вашего проекта, и вы сможете настроить его так, как хотите. Недостатком этого является то, что скрипты build/start в вашем пакете. Json будут заменены новыми командами, а вместо

$ ng serve

вам нужно сделать что-то вроде

$ npm run build & npm run start

Этот метод должен работать во всех последних версиях angular -cli (я лично пробовал несколько, причем самый старый был 1.0.0-beta.21 и последний 1.0.0-beta.32.3)

Ответ 3

В соответствии с этим issue было конструктивным решением не разрешать пользователям изменять конфигурацию Webpack, чтобы уменьшить кривую обучения.

Учитывая количество полезной конфигурации на Webpack, это большой недостаток.

Я бы не рекомендовал использовать angular-cli для производственных приложений, так как он очень самоуверен.

Ответ 4

Конфигурацию веб-пакета CLI теперь можно извлечь. Посмотри ответ Антона Никифорова.


устарели:

Вы можете взломать шаблон конфигурации в angular-cli/addon/ng2/models. На данный момент нет официального способа изменить конфигурацию веб-пакета.

На github есть закрытая проблема "wont-fix" по этому поводу: https://github.com/angular/angular-cli/issues/1656

Ответ 5

То, что я думаю о том, что иметь веб-пакет будет легко, когда будет выпущен продукт.

К вашему сведению: https://github.com/Piusha/ngx-lazyloading

Ответ 6

Согласно предложению ng eject вы можете использовать ngx-build-plus

Существует несколько проектов, которые можно использовать в сочетании с новым форматом конфигурации, который обеспечивает преимущества извлечения без затрат на обслуживание. Один из таких проектов ngx-build-plus находится здесь: https://github.com/manfredsteyer/ngx-build-plus