angular-cli, де файл webpack.config.js - новий angular6 не підтримує викидання


132

ОНОВЛЕННЯ: грудень 2018 року (див. Відповідь "Анікет")

За допомогою Angular CLI 6 вам потрібно використовувати будівельники, оскільки викидання ng застаріле і незабаром буде видалено в 8.0

ОНОВЛЕННЯ: червень 2018: Кутовий 6 не підтримує витяг **

ОНОВЛЕННЯ: лютий 2017: використовуйте витяг

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

Я встановив кутовий затиск із цим:

npm install -g angular-cli@webpack

Коли я працював з angular1 та web pack, я міняв файл "webpack.config.js", щоб виконати всі завдання та плагіни, але в цьому проекті, створеному з angular-cli, хто це працює, я не бачу. це магія?

Я бачу, як Webpack працює, коли я роблю:

ng serve 

"Version: webpack 2.1.0-beta.18"

але я не розумію, як працює конфігурація кутового кліпу ...


Він вбудований у angular2 cli додає. Жодна магія просто спрощена.
Джоравар Сінгх

3
дякую @MrJSingh, але чи є ще конфігураційний файл? чи просто працює з angular-cli.json? мені не потрібно більше конфігураційних плагінів?
stackdave

Це AT: node_modules \ @ngtools
bharatpatel

1
Angular 6.0.8 наразі не підтримуєng eject
Robert Love

4
Мені подобається, як ОП оновлює правильну відповідь майже через рік після публікації.
Світлий

Відповіді:


34

У Angular CLI 6 вам потрібно використовувати будівельники, оскільки викидання ng застаріле і незабаром буде видалено в 8.0. Ось що пише, коли я намагаюся зробити витяг

введіть тут опис зображення

Ви можете скористатись пакетом 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 у вашому ж кореневому каталозі та додати туди свою конфігурацію вебпакету .

Однак, на відміну від наданої тут конфігурації ng, буде об'єднано з конфігурацією за замовчуванням, тому просто додайте речі, які ви хочете відредагувати / додати.


4
Приємно. У кутових документах слід згадати спосіб налаштування в конфігурацію веб-пакету. Це допомагає новачкам, як я.
Ваджахат

Ця настройка кутових будівельників не працює для мене, вона працює ng serveлише через 5 секунд без виводу. У моєму проекті використовується кутова клітка 7 та кутове ядро ​​5.
тед

Чи є якісь зміни, які я повинен внести у scriptsвласність package.json ?
Крішна Прашатт

Зауважте, що у версії кутових будівельників для кутового 8 " @angular-builders/dev-server:genericбуло застаріло. @angular-builders/custom-webpack:dev-serverЗамість цього використовуйте ". Чи можете ви оновити цю відповідь, щоб це відобразити?
Брайан Маккотчон

1
github.com/just-jeb/angular-builders/tree/master/packages/… - дуже прості вказівки для цього ... - працює у Angular 9 Universal Ivy
Jonathan

153

Існує хороший спосіб вийняти webpack.config.js з angular -cli . Просто запустіть:

$ ng eject

Це створить webpack.config.js в кореневій папці вашого проекту, і ви можете налаштувати його так, як вам потрібно. Мінусом цього є те, що сценарії збірки / запуску у вашому пакеті.json будуть замінені новими командами, а не

$ ng serve

вам доведеться зробити щось подібне

$ npm run build & npm run start

Цей метод повинен працювати у всіх останніх версіях angular-cli (я особисто спробував декілька, найстаріший - 1.0.0-beta.21 , а останній 1.0.0 - beta.32.3 )


1
Розчарування лише в тому, що він викидає лише конфігурацію середовища розробки. Є аргумент, який ви можете додати до ng eject, щоб використовувати натомість конфігурацію виробництва, але це наразі не працює github.com/angular/angular-cli/isissue/5433
jtsnr

@bebebe github.com/angular/angular-cli/isissue/4907 Я просив бути впевненим.
Кунепро


@AntonNikiforov Як налаштувати веб-пакет після вилучення? Я думаю, що файл конфігурації веб-пакету виглядає настільки складним. Причина, яку я відкидаю, полягає в тому, що я хочу використовувати postcss у своєму проекті, але cli зараз його не підтримує.
Ng2-Fun

як запустити ng build -w? npm run build -w не працює, те ж саме для ng build --prod та ng build -d "щось"
Victor Bredihin

49

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

Враховуючи кількість корисної конфігурації на Webpack, це великий недолік.

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


8
Не рекомендується входити в чорний ящик, поки ви не зрозумієте кожен потік архітектури. Це може бути дуже дорого, якщо деякі не підтримуються або не можуть бути налаштовані в середині розробки проекту.
Ігнатій Андрій

11

Налаштування веб-пакету CLI тепер може бути вилучено. Перевірте відповідь Антона Нікіфорова .


застаріла:

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

Про github про це закрите питання "wont-fix": https://github.com/angular/angular-cli/isissue/1656


1
нарешті я використовую цей скелет, кутовий кліп не готовий до реальної роботи з веб-пакетом, у мене багато проблем. Раджу скористатися цим: github.com/webpack/webpack-dev-server
stackdave

5
Мені сумно, питання закрите, оскільки "не вдасться реалізувати". :-(
monnef

1
Існує також npmjs.com/~ngtools, де ви можете отримати веб-пакет, який працює в автономному режимі CLI. Дивіться youtu.be/uBRK6cTr4Vk?t=7m57s
Мікеум


-1

Згідно з пропозицією, ng ejectяку ви можете використовуватиngx-build-plus

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

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