jhipster / generator-jhipster-nodejs

A NodeJS blueprint that creates the backend using NestJS
https://www.npmjs.com/package/generator-jhipster-nodejs
Apache License 2.0
257 stars 81 forks source link

Release the first 1.0.0-alpha.2 version of NodeJS blueprint #38

Closed ghost closed 5 years ago

ghost commented 5 years ago

Hi all wonderful community, @jdubois, @deepu105 and @pascalgrimaud, as discussed in the private and public chats, I'm ready to release the first version of the generator with the tested and last features developed by me, indicated in the CHANGELOG. Thanks all for the attention and the interest :) .

jdubois commented 5 years ago

Awesome, congrats!!! Let me add the bug bounties, and give you the permissions - I'll do this at the beginning of next week. We must also add a sample app, etc.

ghost commented 5 years ago

Hi @jdubois , thanks a lot! I have already provided all that is needed (at least I think :) ... All it's explained in the README.md (where during the release phase I will update the Title with "RELEASED" instead of "IN DEVELOPMENT".. so in that are indicated all info, with a demo gif and an example app

jdubois commented 5 years ago

Perfect, I'll have a look next week. Ping @jhipster/developers !!

gmarziou commented 5 years ago

Excuse my ignorance but why does generated project require maven?

ghost commented 5 years ago

@gmarziou on your machine you don't have to install maven, it is included in the generated project as wrapper (mvnw). As a normal jhipster requirement, you must have only java installed. The project contains a pom.xml because there are some profiles and command to build the server part with the client part (maven in this generator is a sort of "orchestrator"). However you can run the entire app with the normal npm scripts defined in the package.json. You can read the related README.md to understand more.

mraible commented 5 years ago

I don't think the Node.js or .NET blueprints should require Maven or Gradle at all.

On Sep 14, 2019, at 08:23, Angelo Manganiello notifications@github.com wrote:

@gmarziou on your machine you don't have to install maven on your machine, it is included in the generated project as wrapper (mvnw). As a normal jhipster requirement, you must have only java installed. The project contains a pom.xml because there are some profiles and command to build the server part with the client part (maven in this generator is a sort of "orchestrator"). However you can run the entire app with the normal npm scripts defined in the package.json. You can read the related README.md to understand more.

— You are receiving this because you are on a team that was mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

PierreBesson commented 5 years ago

Personally I am in favor of having a generated pom. I personally use either maven or gradle with the node plugin in all my node project to simplify CI setup. This allows to download the right node version which is a big annoyance. Of course you could do this with NVM as well which is a shell script solution to the same problem but it cannot fully wrap node like maven/gradle. Of course if people don't want this, it is very easy to remove a few files after generation.

gmarziou commented 5 years ago

I'm on same page with Matt, I tend to think that people wanting to use Nodejs blueprint might not expect a hybrid environment (java+node). IMHO, it should be an option and default should be 'no java', or maybe move it to a docker container.

Otherwise, I think we could realistically expect some flame wars or basic questions about how maven works (e.g. with proxies) or even worse about how to install java.

ghost commented 5 years ago

@gmarziou in fact I have put it for the same reasons that @PierreBesson has explained. It is compliant with the jhipster standard, so the developers have already confidence with maven structure.. but this pom has only profiles and maven-frontend-plugin to run frontend and/or server part. If you don't want to use maven, you can delete it after generation, otherwise you can hold it and use the standard npm scripts defined in the package.json. For the proxies there aren't problems : the generator adds the maven wrapper (mvnw) so that you mustn't have it on your machine configured, and in the last, I repeat it, the pom.xml has only profiles and the maven frontend plugin configured to run client and/or server part and install node versions (as jhipster standard).. then to install the blueprint and use jhipster however you have to have java...it's all clear?

mraible commented 5 years ago

It’s clear, and I think it’ll hurt marketing for the Node.js backend. If I was a Node.js developer and I started a new project with it, I wouldn’t want to see any Java-related artifacts in my project. I doubt there’s many Java developers that want to develop Node.js backends. If there’s Maven files present, that seems like the audience you’re trying to target.

On Sep 14, 2019, at 9:32 AM, Angelo Manganiello notifications@github.com wrote:

@gmarziou https://github.com/gmarziou in fact I have put it for the same reasons that @PierreBesson https://github.com/PierreBesson have explained. It is compliant with the jhipster standard, so the developers have already confidence with maven structure.. but this pom has only profiles and maven-frontend-plugin to run frontend and/or server part. If you want to use maven, you can delete it after generation, otherwise you can hold it and use the standard npm scripts defined in the package.json. For the proxies there aren't problem : the generator adds the maven wrapper (mvnw) so that you mustn't have it on your machine, and in the last, I repeat it the pom. has only profiles and the maven frontend plugin configured to run client and/or server part and install node versions (as jhipster standard).. it's all clear?

— You are receiving this because you are on a team that was mentioned. Reply to this email directly, view it on GitHub https://github.com/jhipster/generator-jhipster-nodejs/issues/38?email_source=notifications&email_token=AAAELZFDTEHTMTS2HVUHN2TQJT7YDA5CNFSM4IWWSJT2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6W6A2Y#issuecomment-531488875, or mute the thread https://github.com/notifications/unsubscribe-auth/AAAELZAI3AIR63JKF76GOZDQJT7YDANCNFSM4IWWSJTQ.

ghost commented 5 years ago

@mraible in the project java artifacts aren't generated, there is only a pom.xml that could help the CI/CD processes and "assembly" the full app. All the files generated are of typescript language. So maven it only a facility tool in this case, not a requirement for the development.

gmarziou commented 5 years ago

All the files generated are of typescript language

By the way, maybe you should mention typescript in the stack used in https://github.com/jhipster/generator-jhipster-nodejs/blob/master/README.md

gmarziou commented 5 years ago

So maven it only a facility tool in this case, not a requirement for the development.

This was not obvious for me when I read the README of the generated project: https://github.com/amanganiello90/jhipster-nodejs-sample-app#building-and-running

gmarziou commented 5 years ago

Just tried it and there are few things printed on screen that could confuse node developers but I don't know if a blueprint has control over these:

Besides JUnit and Jest, which testing frameworks would you like to use?

Run your Spring Boot application: ./mvnw clean package -Pdev (mvnw clean package -Pdev if using Windows Command Prompt)

Next, I tried to run it as instructed but I did not have java installed which I suppose could be the case for a node developer:

mvnw clean package -Pdev

Error: JAVA_HOME not found in your environment.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
ghost commented 5 years ago

All the files generated are of typescript language

By the way, maybe you should mention typescript in the stack used in https://github.com/jhipster/generator-jhipster-nodejs/blob/master/README.md

@gmarziou NestJS, as Angular, is already a framework written in typescript

ghost commented 5 years ago

So maven it only a facility tool in this case, not a requirement for the development.

This was not obvious for me when I read the README of the generated project: https://github.com/amanganiello90/jhipster-nodejs-sample-app#building-and-running

This mode run is a sort of "shortcut/facility" to run one shoot frontend/server app in a single process ( at the same manner of a spring boot execution). But if you want to use that command, you can run separately the npm scripts as explained in the server/README.md (it's indicated in the README.md linked from you)

ghost commented 5 years ago

Just tried it and there are few things printed on screen that could confuse node developers but I don't know if a blueprint has control over these:

Besides JUnit and Jest, which testing frameworks would you like to use?

Run your Spring Boot application: ./mvnw clean package -Pdev (mvnw clean package -Pdev if using Windows Command Prompt)

Next, I tried to run it as instructed but I did not have java installed which I suppose could be the case for a node developer:

mvnw clean package -Pdev

Error: JAVA_HOME not found in your environment.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
  1. For the test framework question, it's inherited from the general app generator that it's not allowed to override (as the applicationType and the app name) . This question does not generate nothing whatever response. If you know the way to delete that question, you are welcome to submitt the relative PR :)

  2. After generation the blueprint prints on console the facility command to run the entire application compliant with the jhipster running standard. A jhipster developer is confident and can migrate easy to use this blueprint, while a nodeJS developer can consider that as a "custom command line interface" and run it without know what is maven. If the developer hasn't JAVA installed, can ignore it and run the app following the npm scripts steps (npm install, npm start and so on). The maven pom.xml is a facility to install the correct node version using the frontend maven plugin, as the normal jhispter generator. Similary, an angular developer, does not have to modify pom.xml or understand what is, he goes on to develop with the npm standards (in the same way of a spring boot application with the angular part, he didn't care of maven of java functionalities). If it is a problem, I can add a note in the README.md, and print on console this message: Run your app with this command: ./mvnw clean package -Pdev (mvnw clean package -Pdev if using Windows Command Prompt). If you does not have JAVA installed, read the related section under server/README.md

gmarziou commented 5 years ago

This question does not generate nothing whatever response. If you know the way to delete that question, you are welcome to submit the relative PR :)

I rather propose to change the texts in the main generator:

Besides JUnit and Jest, which testing frameworks would you like to use?

would become

Which additional testing frameworks would you like to use?

and

Run your Spring Boot application:

would become:

Run your backend application:

gmarziou commented 5 years ago

NestJS, as Angular, is already a framework written in typescript

According to their doc, it is built with and fully supports TypeScript (yet still enables developers to code in pure JavaScript). My point here is that the generator generates typescript.

ghost commented 5 years ago

This question does not generate nothing whatever response. If you know the way to delete that question, you are welcome to submit the relative PR :)

I rather propose to change the texts in the main generator:

Besides JUnit and Jest, which testing frameworks would you like to use?

would become

Which additional testing frameworks would you like to use?

and

Run your Spring Boot application:

would become:

Run your backend application:

Hi @gmarziou, thanks for the help :) however:

  1. I can't delete the JUnit question or modify it because it belongs to the general app generator that is not allowed to override basic rules for jhipster blueprint
  2. "Run your backend application:" for me it's better Run your app, because you can choose also a monolithic app that has the client part (so in this case you run the full app not only server part)
  3. For the doc, I can add some notes and explanations to point that is all typescript and how can run it with the standard npm scripts. Thanks a lot for the feedbacks, you are welcome for every improvement.
ghost commented 5 years ago

@gmarziou resolved all with #40 , you can view the new app committed here

ameinabdi commented 5 years ago

@amanganiello90 did generator have font-end of react if it's not why don't you add it ?

ghost commented 5 years ago

Hi @ameinabdi , thanks for the question. Now the generator supports for the client only Angular. For more information about features enabled please refer to README.md, CHANGELOG.md and the sample app. This is a first version that I have completely developed by me with the helping of some gentlemen developers. I have prefered angular because I have some experience and confidence in this. If the generator will be of great support, we can provide in the ROADMAP new features as the react support. However, there are the default react templates inherited from jhipster. So you can choose react client as answer in the related question, but I have never tested the app generated. Any feedbacks for improvements are appreciated a lot.

ghost commented 5 years ago

Guys, Any news to prepare the release? An official repo for sample app, grants to publish the package , and so on. Thanks

jdubois commented 5 years ago

Sorry @amanganiello90 I took too much time:

jdubois commented 5 years ago

@amanganiello90 you should have received the invitation to our NPM org by email. Once you accept it, I'll add you to a specific team for this project.

Then I have a doubt on the process, because I think they improved it since the last time I did it. Here's what we used to do, but I hope it's better: you need to publish the package yourself, and then transfer it to me (login "jdubois"), so I can then put it under the JHipster org and give you again the permissions, through your team. Tell me if that's complex! I would advise that you release a first very early release, and call the package "generator-jhipster-nodejs". Then we iterate a bit (do a couple of "alpha" releases) before we do the real 1.0.0 release, once everything is properly done.

This is why I want to move to GitHub's registry, the NPM UX/UI is so awful!!

ghost commented 5 years ago

@jdubois thanks a lot! For me it's a pleasure, an honor to receive compliments from you! I have accepted the npm invite, my npm username is amanganiello90. So I have to publish the package from myself with a 1.0.0-alfa.1 version and notify you? thanks a lot.

jdubois commented 5 years ago

@amanganiello90 c'mon, you're the one doing all the hard work :-) I have added you to the "nodejs-blueprint" team:

ghost commented 5 years ago

@jdubois very gentleman :) .. Do you refer to npm jhipster team? So,

  1. Where I have to set authentication?
  2. Yes, of course
  3. Ok, perfect.

Could you please also create and add me in a new git repo for the sample app, as jhipster-sample-app-nodejs, (so I can refer to it in the readme) Thanks again.

jdubois commented 5 years ago

Oh @amanganiello90 what you refer to is the JHipster organization on NPM, and inside it there are several teams (it seems those are not public, I don't know why, maybe for privacy). So I created one specific team, which will have full permissions on the future generator-jhipster-nodejs package (but not on the other packages, of course).

I'm sure it will end up working well, as we already set this up several time, but the UI sucks so much that it's a bit hacky at first.

ghost commented 5 years ago

Oh @amanganiello90 what you refer to is the JHipster organization on NPM, and inside it there are several teams (it seems those are not public, I don't know why, maybe for privacy). So I created one specific team, which will have full permissions on the future generator-jhipster-nodejs package (but not on the other packages, of course).

I'm sure it will end up working well, as we already set this up several time, but the UI sucks so much that it's a bit hacky at first.

Okkkkk, I have also activated on npm 2FA auth: immagine

jdubois commented 5 years ago

@amanganiello90 in your readme you point to a sample application that returns a 404... It probably worked before, as I remember looking at your generated code. Anyway, the sample application should be under the JHipster org, let me create this for you! I will call it "jhipster-sample-app-nodejs".

ghost commented 5 years ago

@amanganiello90 in your readme you point to a sample application that returns a 404... It probably worked before, as I remember looking at your generated code. Anyway, the sample application should be under the JHipster org, let me create this for you! I will call it "jhipster-sample-app-nodejs".

Yes, today I moved the repo and I created a branch for the release with the correct url.. Perfect, I was waiting for the official repo :) thanks @jdubois

ghost commented 5 years ago

@jdubois I have just released the generator, and it is published now: https://www.npmjs.com/package/generator-jhipster-nodejs/v/1.0.0-alpha.2 . I have also transfered to you on npm. Thanks

ghost commented 5 years ago

$500 bug bounty claim: https://opencollective.com/generator-jhipster/expenses/10177

jdubois commented 5 years ago

@amanganiello90 awesome! I just paid the bounty! I also moved the NPM package to the JHipster organization on NPM, and you should have full permissions on it. So that should all be OK, but the NPM UI is so broken that I hope everything's fine: don't hesitate to contact me on this!

ghost commented 5 years ago

@jdubois, thanks very very much! Yes, it's all OK. If in future I have problems to transfer new release packages in the npm jhipster, I will know it to you. Thanks a lot again for the advices and interest.