This is currently an undocumented breaking change for those migrating from 5 to 6, ng eject
is temporarily disabled at v6.0.0.
Angular CLI: 6.0.0
Node: 9.11.1
OS: darwin x64
Angular: 6.0.0
... animations, cli, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.6.0
@angular-devkit/build-angular 0.6.0
@angular-devkit/build-optimizer 0.6.0
@angular-devkit/core 0.6.0
@angular-devkit/schematics 0.6.0
@ngtools/webpack 6.0.0
@schematics/angular 0.6.0
@schematics/update 0.6.0
rxjs 6.1.0
typescript 2.7.2
webpack 4.6.0
ng eject
Running ng eject
resulted in the following message:
The 'eject' command has been temporarily disabled, as it is not yet compatible with the new
angular.json format. The new configuration format provides further flexibility to modify the
configuration of your workspace without ejecting. Ejection will be re-enabled in a future
release of the CLI.
If you need to eject today, use CLI 1.7 to eject your project.
Reference: https://github.com/angular/angular-cli/blob/master/packages/angular/cli/commands/eject.ts
I wasn't aware of this issue until after I upgraded, note that I did read the release notes. Since ng eject
has been removed for now, I expected supporting documentation:
Provide information on this in the README as a breaking change. This would help to let folks know about this issue before they attempt to migrate.
Provide guidance in the wiki: https://github.com/angular/angular-cli/wiki.
Possibly related to another issue https://github.com/angular/angular-cli/issues/10593
Seems like we're missing an issue for eject, so keeping this one open.
I think it would still be good to be able to eject. We want to follow whatever webpack convention that the default angular-cli
uses, without really opting into angular-cli, because it is too opinionated and unflexible.
If there is no eject command maybe provide some info on the kinds of webpack plugins Angular uses.
This basically means that it's not possible to use angular 6 with native plugins (which require a specific webpack loader) ... too bad :(
@tinganho I agree with you, the CLI is unflexible . This have been discussed here #1656. @hansl locked the conversation which I think goes against community driven projects. @hansl would you reconsider re-opening the conversation so that the community can build/find/discuss CLI alternative? I personally use https://github.com/gdi2290/angular-starter which is CLI free.
Yes, at this point Angular CLI is dangerously bad to rely on. If at some point some dependency breaks or you need some customization that angular CLI doesn't support, then you are screwed. And CLI should help you do hard, repetitive, standardized work, not lock you in. That's why I don't recommend anybody, apart from quick demos, to use CLI in their projects.
Also, "Eject" feature is kind of nice, but I think it shows the fundamental flaw with Angular CLI - it's either CLI or plain webpack. It doesn't enhance existing webpack pipeline, but tries to replace it with it's own high level construct, and that creates a lot of friction, lock-in, unnecessary compatibility problems etc, and in the end defeats it's own purpose.
@biiiipy frankly, any change they make could screw all the things.
And no, you cannot stay stable to a given version because npm audit
still warns all of us that is extremely dangerous not to move on the newest possible versions.
Checkmate ...
Hi guys, is there an ETA on solving the missing ng eject option issue?
Hi everyone, I really hope the CLI will be extensible in the nearest future.
For the time being I've created a small library that allows to extend the existing browser
and server
targets with a custom webpack config.
It worked for me (I needed node-loader
for native modules and also some externals), hope it can help someone else.
You can find the example with native modules here.
More details in the related Medium story.
@meltedspark First of all thank you for your contribution.
On the other hand I am totally disappointed on the silence about this breaking changes. I am not going to adopt this version of Angular for the time being. And I am not going to adopt the million-th piece of javascript in addition to the 67K file for an empty application.
Again, thanks but all of this is terrible.
+1
https://github.com/gdi2290/angular-starter has been updated to Angular 6, I think this's the best solution for now.
+1
@meltedspark thanks for the opening our eyes to the option of extending the build. Until now, we've been ng-ejecting and then changing manually the webpack.config. As a quick question, how do you replace a plugin (eg AngularCompilerPlugin) rather then add one?
@lmessinger thank the Angular team for rewriting Angular CLI to have that kind of flexibility 😊
Regarding your question, seems that this peace of functionality is currently missing from custom-webpack builders, but it's not a big deal to add it.
I'm currently unavailable for a week, would you mind opening an issue and I'll take care of it once I'm available?
@andygup https://github.com/Angular-RU/angular-cli-webpack
This package provides an opportunity to modify @angular/cli project's webpack configuration without "ejecting".
@splincode thanks - it's an alternative but it seems not to use angular-cli, but replace it with an alternative. so i do prefer something like @meltedspark is refering to.
@meltedspark - thanks, i'll open a issue. can you describe meanwhile how you plan of doing it, i might be able to take a stab myself
@lmessinger angular-cli-webpack allows writing directly on typescript (webpack.config.ts)
can anyone tell when ng eject will be enabled again ? need webpack.config,js file for angular project immediately. or what else can i do to extract that file.
@jkc1996 today you can usage
https://github.com/meltedspark/angular-cli-builders
https://github.com/Angular-RU/angular-cli-webpack
Are we likely to see this in 7.0? (I see the beta.0
tag was published recently.)
I've moved to https://github.com/meltedspark/angular-cli-builders, seems a good solution
Angular CLI: 6.0.8
Need custom webpack config feature!
My team needs the newest version of uglify-js (getting "Name expected" error with current uglify js version) when using ng-packagr with the angular cli, but this is not possible because of ng eject being disabled. Have tried @meltedspark plugin, but this does not work with ng-packagr (does work excellently with standard angular though).
We have to do big work arounds to make things work now.
Hope this will be resolved soon.
@hansl will ng eject
be in 7.0.0
? It's not in beta 4: https://github.com/angular/angular-cli/releases/tag/v7.0.0-beta.4.
Can you assign someone and update the milestone for this issue?
eject functionality is no longer available in the latest version (6.x+). For custom webpack configurations the following unofficial add-on is a suggested solution: https://github.com/manfredsteyer/ngx-build-plus
And I thought angular team cared about community. Silently killing a crucial extension point (although a flawed one), and outsourcing to unofficial (read unsupported) hacklibrary without notice and no community discussion. That's just great...
This is a classic example why frameworks are nice only while they don't screw anything up. And more often than not, they all at some point do it. +1 reason to start looking at vue/react, thanks.
Please note that the linked project above is not a hack. It is currently using an experimental extension API that will become stable in 8.0 that allows extensive customization and extension to the build process.
Eject is a one-way process and pushes full responsibility of upkeep and maintenance onto the application developer. In contrast, the package above allows the inclusion of additional webpack plugins or loaders while still leveraging the existing CLI experience and improvements.
In addition, if the goal of a project is for a fully standalone webpack configuration, there are a multitude of Webpack based starter projects available to cater to that need as well.
@clydin Do you know how well the package you mention works with ng-packagr and the general ng g application and ng g library cli commands? My team needs to modify how webpack works in conjuction with these and ng-packagr, as we need a newer version of uglify js to fix some errors.
Just your 5 bucks if you know anything :)
@clydin nice to hear! That sounds like a more solid solution, I hope that the API is wide enough so we can leverage it with confidence.
The problem that remains is that:
1) This should have been deprecated until a viable solution is provided and not break people's apps.
2) Removing it in v6 and reintroducing it as stable in v8 is a 12 month gap. Angular was supposed to be rock solid enterprise ready, no (read - limited) breaking change framework (with all the talk of pushing every commit through all tests in all google angular apps etc...), but this doesn't look like it.
Anyway, I hope that this will get better in the future :) thanks!
@MartinJHammer I can't tell you about ng-packagr
but from what it looks like, @angular-builders/custom-webpack is more capable than ngx-build-plus. At least for now.
Mostly from webpack plugins perspective but not only (for example it supports different merge strategies).
Anyways my intention is to support this library as a long term alternative to ng eject
so you are welcome to open a feature request for ng-packager
if it doesn't work out of the box.
You're even more welcome to create a PR.
@meltedspark My boss ended up designing another solution for now, so I won't be able to make a PR this time around. But when the time comes, I'll definitely have custom-webpack in mind :)
BTW thanks so much for making an awesome extension :)
any update here?🤷🏻♂️
I guess the question is, since ngx-build-plus
does not mention it is: will that library still be the official extension for angular 8?
@vance ng eject
is not coming back, so official or not, you'll still have to use one of the 3d party builders.
I can tell you that Angular team is very cooperative in this term so likely the new versions of 3d party builders will be released at the same time Angular 8 will be.
From what I see, there is nothing to worry about.
Are there any updates Wether this will be back in cli 8 or not?
This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.
Read more about our automatic conversation locking policy.
_This action has been performed automatically by a bot._
Most helpful comment
Yes, at this point Angular CLI is dangerously bad to rely on. If at some point some dependency breaks or you need some customization that angular CLI doesn't support, then you are screwed. And CLI should help you do hard, repetitive, standardized work, not lock you in. That's why I don't recommend anybody, apart from quick demos, to use CLI in their projects.
Also, "Eject" feature is kind of nice, but I think it shows the fundamental flaw with Angular CLI - it's either CLI or plain webpack. It doesn't enhance existing webpack pipeline, but tries to replace it with it's own high level construct, and that creates a lot of friction, lock-in, unnecessary compatibility problems etc, and in the end defeats it's own purpose.