nrwl / nx

Smart Monorepos · Fast CI
https://nx.dev
MIT License
23.57k stars 2.36k forks source link

Nx 9 Plans #1511

Closed vsavkin closed 4 years ago

vsavkin commented 5 years ago

Nx 7 to Nx 8 was a big release:

Nx 9 is building upon this, making it a truly generic tool for modern web development.

Generic Tool

Nx 8 is a generic development tool, which comes with Angular, React, Web, Express, Nest plugins. You can build your own: add support for Stencil, Svelte, Ember or anything else. If you want to do it, get in touch with us, and we will help you.

This year we are continuing on this journey. We are changing Nx.dev, so you can select technologies you are using, and see all the documentation written from that point of view.

Supporting Design Systems

Nx is already a fantastic tool for design systems: you can develop components, test them, document them, use them in a variety of projects. When you change a component, you can run a test against that component and then test all the applications using that component.

Many teams who are building design systems with Nx end up wiring up Storybook. It works, but it requires a little bit of setup. To make this easier, we are going to add a Storybook plugin for Nx.

Nx Course

We provide a free online course on Nx at connect.nrwl.io. There you can also find a free book on building large enterprise applications using Nx. Both the course and the book are great, but they need a refresher. So we are working on updating them to cover all the recent additions to Nx.

More Transparency

Historically, we haven't been very consistent at communicating our priorities and release plans. It was done ad hoc via blog posts and github issues. The Nx core team will do much better.

This issue is the first step in this process. We also added two milestones "next" and "nx9", so you can track what should be released in the next minor and major version of Nx.

Bazel Support

We added experimental Bazel support a year ago. Unfortunately, at that point, Bazel wasn't mature enough to be used for most organizations. Now, even though still not perfect, Bazel support got a lot better. This is a good time to make Nx work with Bazel, and this time to make it production ready.

We are planning to make Regular Nx => Nx + Bazel transition straightforward. You can start with using regular Nx right now, and then, at some point, if you want to Bazelify it, you should be able to do it with minimal effort.

Let us know what your thoughts are.

Thanks! Nx Core Team

perjerz commented 5 years ago

Is there any plan for supporting Apollo GraphQL ?

oacs commented 5 years ago

Is there any plan for supporting Ngxs?

vsavkin commented 5 years ago

@perjerz3434 yes to Apollo. We use apollo for many internal projects, and with clients, so we are planning to add @nrwl/apollo. But I'm not sure if Nx 9 is a realistic timeline for it though. It might land later.

Jordan-Hall commented 5 years ago

Moving into version 9 can we removed the Jest dependency in @nrwl/node

also was thinking trying to create a build for vue

FrozenPandaz commented 5 years ago

@Jordan-Hall the dependency is needed to generate unit tests for node products. It should be hoisted as it depends on the same version as the workspace should be set to.

Vue support would be great. Building the application is easy but drawing dependencies is hard when using .vue files. Using .ts files it would be easy. Please create a new issue for Vue support and we can discuss more there.

gauravapheleia commented 5 years ago

@FrozenPandaz @Jordan-Hall has the vue ticket been created? I would love to contribute on that front.

Jordan-Hall commented 5 years ago

@gauravapheleia I've created an outline ticker for Vue support. https://github.com/nrwl/nx/issues/1541 I'm going to start looking into this from tomorrow.

eleMental595 commented 5 years ago

@Jordan-Hall @FrozenPandaz I have been working in vuejs for the last 6 months, and would love to contribute. Please show the way.

Jordan-Hall commented 5 years ago

@eleMental595 That would be good. Move discussion on Vue to the ticket #1541

rteaguewr commented 5 years ago

Similar to Apollo would love to see AWS Amplify integration. Obviously probably not for NX9. We currently use Amplify in our NRWL/NX monorepo paired with Apollo Client.

xmlking commented 5 years ago

Storebooks add great value to nx. Storebook is for visual/appearance testing where Just is for correctness testing. https://medium.com/better-programming/how-to-speed-up-angular-development-and-reduce-compilation-times-a32262d478bc

jerome-nelson commented 5 years ago

Thanks for the Bazel conversion news!! What nx build functionality do you plan to replace with Bazel?

@vsavkin

akolybelnikov commented 5 years ago

I am looking into adding a Svelte project to our existing Nx/Angular monorepo. Any hints on where to start with it are really appreciated. Also, I would love to contribute with this regard.

n1xn commented 5 years ago

NextJS with Now support would be more then great!

oknoorap commented 5 years ago

Please support nextjs

jafaircl commented 5 years ago

gatsby support would be awesome

jaysoo commented 5 years ago

@NikoMontana @oknoorap Next.js support is being discussed, but we don't have a concrete plan yet. So stay tuned!

@jafaircl I think we are prioritizing Next.js over Gatsby for now. But keep letting us know what you'd like do see!

mehrad-rafigh commented 5 years ago

Next.js would be great indeed. I am looking into Gatsby and next.js to render static-web pages.

Gatsby already has a CLI, which does most of the job and had to be recreated in some sorts. Next.js on the other hand is not so opinionated (at first glance) and schematics can be written for that. Any chance, the community could take over @jaysoo?

asherccohen commented 5 years ago

Definitely next.js and storybook would add great value to nx!

creadicted commented 5 years ago

A better support for libraries/shared modules in nestjs would be fantastic. If I use the libs folder I run in to issues with either linting errors, deep import warnings or circular dependencies. If I use another folder - I loose the benefits of nx.

mcblum commented 5 years ago

Thanks for all the work on this @vsavkin. One thing that I would love to see if it fits the roadmap is an easier way to generate generic libs. For example, I'm structuring our NestJS microservices the same way as I would structure an Angular app, but there isn't (as far as I can tell) a super easy way to make a Nest feature lib. I used to just select the typescript option from the menu, but that appears to now be gone, so I have started doing it by hand. Not the end of the world, but since the Angular structure works so well I figured why not use it for services as well.

Thanks again for all of the work that you and the team have done to make us all better developers!

ManAnRuck commented 5 years ago

prisma2 support would be also awesome! 👏 it's currently in alpha, but in my eyes it's a gamechanger 📢

codercatdev commented 5 years ago

Sweet the Next.js app is great, now Gatsby would be even better ;)

paynecodes commented 5 years ago

Nx 8 is a generic development tool, which comes with Angular, React, Web, Express, Nest plugins. You can build your own: add support for Stencil, Svelte, Ember or anything else. If you want to do it, get in touch with us, and we will help you.

Is there any documentation for building support for other tools? It seems that energy should be focused here if not.

jmcdo29 commented 5 years ago

Now that Nest has its own CLI, will Nx support it in the future?

djedlajn commented 5 years ago

Pattern around nestjs microservices should be adopted imo, because each microservice should be its own app for multitude of reasons.

mcblum commented 5 years ago

@ukaric each microservice is currently intended to be its own app, is it not? What would Nx do differently to support that?

djedlajn commented 5 years ago

@mcblum Yeah indeed i have expressed my self poorly. What I meant by standalone is they should be structured such that if you have project A and it has back-end appropriate microservices for project A will go under that project. And if latter on you have another one you can separate microservices by projects and still keep the benefits of nx style monorepo

StefanNieuwenhuis commented 5 years ago

I would love to see StencilJs support! And I definitely want to contribute to making it happen. But where to start? 🤔 Can someone help me with that?

mcblum commented 5 years ago

@ukaric I think I still don't understand :)

And if latter on you have another one you can separate microservices by projects and still keep the benefits of nx style monorepo

What is a project in this case? Since it's a monorepo, all of your projects should be in the same repo.

mcblum commented 5 years ago

@StefanNieuwenhuis I can recommend reading through the source code and reviewing the schematics! If I wanted to add support for a new framework I'd evaluate how the project was generated, served and built for each type of app.

For example, since Nx supports both Angular and React, you should be able to check the differences and then formulate a plan for introducing StencilJs!

StefanNieuwenhuis commented 5 years ago

Thanks for your reply @mcblum. Existing schematics form a nice starting point indeed. Gonna take a look and I hope that I can formulate a plan.

ghost commented 5 years ago

@vsavkin With Bazel, would it be possible to integrate Frameworks, that are not based on Javascript/Typescript, e.g. Java Spring?

karocksjoelee commented 4 years ago

Hey ~ any plan on adding NativeScript + Angular or React Native ?

Jordan-Hall commented 4 years ago

Hey @karocksjoelee

NX wouldn't want to put time into native application due to the amazing work with the guys over at nStudio has done with xplat.

Xplat is an added value pack for Nx which provides additional app generators and optional supporting architecture for different platform/framework combinations.

I've personally used Xplat and the way they approach is astounding. https://nstudio.io/xplat

I'm unsure if react native is supported but if you find they GitHub. It's an open-source solution and they keen on people contributing

karocksjoelee commented 4 years ago

@Jordan-Hall Awesome ! I didn't knew about Xplat before ( Just getting start ) . Thx : )

paynecodes commented 4 years ago

Is NX still geared toward Angular devs? Xplat sure seems to be.

Jordan-Hall commented 4 years ago

@paynecodes xplat isn't gear towards anything. NX doesn't appear to be geared toward angular anymore. They own CLI coming on very well

paynecodes commented 4 years ago

@Jordan-Hall Thank you for clearing that up. I see mention of Vue.js there as that is something NativeScript supports. I suppose I'm still trying to orient myself around this piece of tooling. It seems to me that it's still a bit too entrenched in certain stacks and there is no documentation for building new stacks. As an application developer, I just want to be able to choose my own stack, and I'm not, yet, seeing the benefit of a monorepo tool that doesn't allow that.

I'm sure there are tradeoffs. I assume nx is able to do nice things by dictating the stack used. What are those things?

Is there a near future where users are able to choose their own stack with the tradeoff being less deep integration with all of the nx cli?

Jordan-Hall commented 4 years ago

@paynecodes NX allows you to choose your own stack.

I would suggest you first generate a blank nx workspace. If you don't want to use angular then choose the option to use nx cli and not angular.json.

Once you have the blank workspace you can choose different set up such as react and nestjs or expressjs or even web component.

However, I believe you are talking about bringing in the framework that's not supported? Feel free to add the type of stack you are wanting. I'm sure the developers that will help integrate a build into NX to support your requirement

stramel commented 4 years ago

I'm happy to see support coming for a tool like storybook. I was curious if there would be a docz alternative offered?

Jordan-Hall commented 4 years ago

@stramel Storybook has now been added with schematics for angular. When do you mean by docz alternative?

stramel commented 4 years ago

@Jordan-Hall My apologies for the poorly worded comment. I use React with my team and have found that Docz works really well on our team. I would love to see it offered as an alternative to Storybook.

Jordan-Hall commented 4 years ago

@stramel Best asking one of the NX team @FrozenPandaz. For me, I wouldn't want to contribute it. But feel free add it yourself.

For me, nx would be better to be framework agnostic. From what i can see Docz is only supported in react

NachoVazquez commented 4 years ago

It may be possible to make jsx optional for React projects. I'm trying to introduce Nx in my company, where the only requirement I got was the use of jsx instead of tsx.

Thanks for this amazing tool BTW!

nasr18 commented 4 years ago

I am looking into adding a Svelte project to our existing Nx/Angular monorepo. Any hints on where to start with it are really appreciated. Also, I would love to contribute with this regard.

@akolybelnikov did you add Svelte project? I also wanna add svelte.

GreedyA1 commented 4 years ago

are there any release dates for NX 9?

beeman commented 4 years ago

are there any release dates for NX 9?

It's generally released a few weeks after the Angular release with the same version number.

paynecodes commented 4 years ago

I am under the impression this project isn’t so directly coupled with Angular. Is this still true?

Jordan-Hall commented 4 years ago

@paynecodes that is correct