angular-cli tập tin webpack.config.js - angular6 mới không hỗ trợ ng đẩy


131

CẬP NHẬT: Tháng 12 năm 2018 (xem câu trả lời 'Aniket')

Với Angular CLI 6, bạn cần sử dụng các trình xây dựng vì ng eject không được dùng nữa và sẽ sớm bị xóa trong 8.0

CẬP NHẬT: Tháng 6 năm 2018: Angular 6 không hỗ trợ ng đẩy **

CẬP NHẬT: Tháng 2 năm 2017: sử dụng ng eject

CẬP NHẬT: Tháng 11 năm 2016: angular-cli hiện chỉ sử dụng webpack. Bạn chỉ cần cài đặt bình thường với npm install -g angular-cli. "Chúng tôi đã thay đổi hệ thống xây dựng giữa beta.10 và beta.14, từ SystemJS sang Webpack.", Nhưng thực sự tôi sử dụng angular-cli chỉ để cấu trúc và thư mục linh hoạt

Tôi đã cài đặt cli góc với cái này:

npm install -g angular-cli@webpack

Khi tôi làm việc với angular1 và gói web, tôi đã sử dụng để sửa đổi tệp "webpack.config.js" để thực thi tất cả các tác vụ và plugin, nhưng tôi không thấy dự án này được tạo với angular-cli, nó hoạt động. đó là ma thuật?

Tôi thấy Webpack đang hoạt động khi tôi làm:

ng serve 

"Version: webpack 2.1.0-beta.18"

nhưng tôi không hiểu cách thức cấu hình angular-cli ...


Nó được xây dựng trong angular2 cli thêm vào. Không có phép thuật chỉ đơn giản hóa.
Jorawar Singh

3
cảm ơn @MrJSingh, nhưng đã có tập tin cấu hình chưa? hoặc chỉ đơn giản là làm việc với angular-cli.json? tôi không cần thêm plugin cấu hình?
stackdave

Đó là AT: node_modules \ @ngtools
bharatpatel 23/2/2017

1
Angular 6.0.8 hiện không hỗ trợng eject
Robert Love

4
Tôi thích cách OP cập nhật câu trả lời đúng gần một năm sau khi đăng.
Sáng

Câu trả lời:


34

Với Angular CLI 6, bạn cần sử dụng các trình xây dựng vì ng eject không được dùng nữa và sẽ sớm bị xóa trong 8.0. Đó là những gì nó nói khi tôi cố gắng thực hiện một đẩy ra

nhập mô tả hình ảnh ở đây

Bạn có thể sử dụng gói xây dựng góc ( https://github.com/meltedspark/angular-builders ) để cung cấp cấu hình gói web tùy chỉnh của bạn.

Tôi đã cố gắng tóm tắt tất cả trong một bài đăng blog trên blog của mình - Cách tùy chỉnh cấu hình bản dựng với cấu hình webpack tùy chỉnh trong Angular CLI 6

nhưng về cơ bản, bạn thêm các phụ thuộc sau -

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

Trong angular.json thực hiện các thay đổi sau -

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

Thông báo thay đổi trong trình xây dựng và tùy chọn mới customWebpackConfig. Cũng thay đổi

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

Lưu ý thay đổi trong trình xây dựng một lần nữa cho mục tiêu phục vụ. Đăng những thay đổi này, bạn có thể tạo một tệp có tên custom-webpack.config.js trong cùng thư mục gốc của bạn và thêm cấu hình webpack của bạn vào đó.

Tuy nhiên, không giống như cấu hình ng eject được cung cấp ở đây sẽ được hợp nhất với cấu hình mặc định, vì vậy chỉ cần thêm nội dung bạn muốn chỉnh sửa / thêm.


4
Đẹp. Một phương pháp để điều chỉnh cấu hình webpack nên được đề cập trong các tài liệu góc. Nó giúp những người mới như tôi.
Wajahath

Thiết lập trình xây dựng góc này không hoạt động với tôi, ng servechỉ thoát sau 5 giây mà không có đầu ra. Dự án của tôi sử dụng cli góc 7 và lõi góc 5.
tedw

Có bất kỳ thay đổi nào tôi phải thực hiện trong thuộc scriptstính của pack.json không?
Krishna Prashatt

Lưu ý rằng, trong phiên bản của các nhà xây dựng góc cho Angular 8, " @angular-builders/dev-server:genericđã không được chấp nhận. @angular-builders/custom-webpack:dev-serverThay vào đó, hãy sử dụng ." Bạn có thể cập nhật câu trả lời này để phản ánh điều đó?
Brian McCutchon

1
github.com/just-jeb/angular-builders/tree/master/packages/ triệt - hướng dẫn rất đơn giản cho việc này ... - hoạt động trong Angular 9 Universal Ivy
Jonathan

153

Có một cách hay để đẩy webpack.config.js khỏi angular-cli . Chỉ cần chạy:

$ ng eject

Điều này sẽ tạo webpack.config.js trong thư mục gốc của dự án của bạn và bạn có thể tự do định cấu hình nó theo cách bạn muốn. Nhược điểm của điều này là các tập lệnh xây dựng / bắt đầu trong gói.json của bạn sẽ được thay thế bằng các lệnh mới và thay vì

$ ng serve

bạn sẽ phải làm một cái gì đó như

$ npm run build & npm run start

Phương pháp này sẽ hoạt động trong tất cả các phiên bản gần đây của angular-cli (cá nhân tôi đã thử một vài phiên bản, với phiên bản cũ nhất là 1.0.0-beta.21 và mới nhất là 1.0.0-beta.32.3 )


1
Sự thất vọng duy nhất là nó chỉ đẩy cấu hình môi trường dev. Thay vào đó, có một đối số bạn có thể thêm vào ng eject để sử dụng cấu hình sản xuất nhưng điều này hiện không hoạt động github.com/angular/angular-cli/issues/5433
jtsnr

@bebebe github.com/angular/angular-cli/issues/4907 Tôi đã hỏi để chắc chắn.
Kunepro


@AntonNikiforov Làm cách nào để định cấu hình gói web sau khi đẩy? Tôi cảm thấy tập tin cấu hình webpack trông rất phức tạp. Lý do tôi đẩy nó là vì tôi muốn sử dụng postcss trong dự án của mình nhưng cli không hỗ trợ nó ngay bây giờ.
Ng2-Vui vẻ

Làm thế nào để chạy ng xây dựng -w? npm run build -w không hoạt động, tương tự với ng build --prod và ng build -d "
Something

49

Theo vấn đề này , đó là một quyết định thiết kế không cho phép người dùng sửa đổi cấu hình Webpack để giảm thời gian học tập.

Xem xét số lượng cấu hình hữu ích trên Webpack, đây là một nhược điểm lớn.

Tôi sẽ không khuyên bạn nên sử dụng angular-clicho các ứng dụng sản xuất, vì nó rất được quan tâm.


8
Bạn không nên nhập hộp đen cho đến khi bạn hiểu mọi luồng của kiến ​​trúc, Sẽ rất tốn kém nếu một số không được hỗ trợ hoặc không thể được tùy chỉnh trong quá trình phát triển dự án.
Ignatius Andrew

11

Cấu hình webpack của CLI hiện có thể được đẩy ra. Kiểm tra câu trả lời của Anton Nikiforov .


lỗi thời:

Bạn có thể hack mẫu cấu hình trong angular-cli/addon/ng2/models. Cho đến nay không có cách chính thức nào để sửa đổi cấu hình webpack.

Có một vấn đề "không sửa chữa" đã đóng trên github về vấn đề này: https://github.com/angular/angular-cli/issues/1656


1
Cuối cùng tôi sử dụng bộ xương này, angular-cli chưa sẵn sàng cho công việc thực sự với webpack, có rất nhiều vấn đề. Tôi khuyên bạn nên sử dụng điều này: github.com/webpack/webpack-dev-server
stackdave

5
Tôi buồn, vấn đề được đóng lại là "sẽ không thực hiện". :-(
monnef

1
Ngoài ra còn có npmjs.com/~ngtools nơi bạn có thể lấy gói web chạy độc lập CLI. Xem youtu.be/uBRK6cTr4Vk?t=7m57s
Mikeumus


-1

Theo đề nghị của ng ejectbạn có thể sử dụngngx-build-plus

Có một số dự án có thể được sử dụng kết hợp với định dạng cấu hình mới cung cấp các lợi ích của việc phóng ra mà không cần chi phí bảo trì. Một dự án như vậy là ngx-build-plus được tìm thấy ở đây: https://github.com/manfredsteyer/ngx-build-plus

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.