Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split generated yeoman project into npm workspace #1495

Open
msujew opened this issue May 14, 2024 · 14 comments · May be fixed by #1520
Open

Split generated yeoman project into npm workspace #1495

msujew opened this issue May 14, 2024 · 14 comments · May be fixed by #1520
Assignees
Labels
yeoman Yeoman generator related issue

Comments

@msujew
Copy link
Member

msujew commented May 14, 2024

After #954, the setup of the yeoman project has become a bit complicated. Trying to use @vscode/vsce to package a vsix file doesn't work natively due to the inclusion of a custom vscode dependency.

Splitting the generated yeoman project into web/language/extension would have a lot of benefits and make features such as #1487 easier as well.

@msujew msujew added the yeoman Yeoman generator related issue label May 14, 2024
@Yokozuna59
Copy link
Contributor

Yokozuna59 commented May 14, 2024

Is this the desired output if all options are selected?

.
├── .vscode/
│   ├── extensions.json
│   ├── launch.json
│   └── tasks.json
├── packages/
│   ├── cli/
│   │   ├── bin/
│   │   │   └── cli.js
│   │   ├── src/
│   │   │   ├── cli-util.ts
│   │   │   ├── generator.ts
│   │   │   └── main.ts
│   │   ├── package.json
│   │   └── tsconfig.json
│   ├── extension/
│   │   ├── src/
│   │   │   ├── extension-browser.ts
│   │   │   ├── extension.ts
│   │   │   ├── main-browser.ts
│   │   │   └── main.ts
│   │   ├── .vscodeignore
│   │   ├── esbuild.mjs
│   │   ├── language-configuration.json
│   │   ├── package.json
│   │   └── tsconfig.json
│   ├── language/
│   │   ├── src/
│   │   │   ├── language/
│   │   │   │   ├── hello-world-module.ts
│   │   │   │   ├── hello-world-validator.ts
│   │   │   │   ├── hello-world.langium
│   │   │   │   └── index.ts
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   ├── linking/
│   │   │   │   └── linking.test.ts
│   │   │   ├── parsing/
│   │   │   │   └── parsing.test.ts
│   │   │   └── validating/
│   │   │       └── validating.test.ts
│   │   ├── langium-config.json
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   └── tsconfig.src.json
│   └── web/
│       ├── src/
│       │   ├── setupClassic.ts
│       │   ├── setupCommon.ts
│       │   └── setupExtended.ts
│       ├── static/
│       │   ├── monacoClassic.html
│       │   ├── monacoExtended.html
│       │   └── styles.css
│       ├── index.html
│       ├── package.json
│       ├── tsconfig.json
│       └── vite.config.ts
├── .eslint.json
├── .gitignore
├── langium-quickstart.md
├── package.json
├── tsconfig.json
└── vitest.config.ts

@msujew
Copy link
Member Author

msujew commented May 14, 2024

@Yokozuna59 Yes, exactly :)

@kaisalmen kaisalmen self-assigned this May 16, 2024
@kaisalmen
Copy link
Contributor

@Yokozuna59 I want to take care of this and update to monaco-editor-wrapper v5 along. Does that sound good to you?

@Yokozuna59
Copy link
Contributor

@kaisalmen Absolutely.

@spoenemann
Copy link
Contributor

Shall the workspace split be an option so users can choose?

@msujew
Copy link
Member Author

msujew commented May 24, 2024

@spoenemann I'd argue that unless it's a pure language project, it's always preferable to split the project into multiple workspaces. Even just with Langium+VSCode.

@kaisalmen
Copy link
Contributor

kaisalmen commented May 29, 2024

@msujew and @Yokozuna59 in the above structure cli is included in the language package. In yo langium there is a separate question for inclusion of the cli. Doesn't it therefore makes sense to move cli to its own package?

I started working on this today and the first point was to organize the template data directly into packages (git mv is your friend) . This eases the overall process that's also why my vote is to put cli into a separate package.

@Yokozuna59
Copy link
Contributor

Yokozuna59 commented May 29, 2024

In yo langium there is a separate question for inclusion of the cli. Doesn't it therefore makes sense to move cli to its own package?

Initially, I thought of the same thing, but @msujew said:

Splitting the generated yeoman project into web/language/extension... (from #1495 (comment))

He didn't mention the cli, so I aligned the output, following this suggestion.


As for me, I would also recommend adding a separate cli package since most packages out there, including you guys, have a separate cli package.

@msujew
Copy link
Member Author

msujew commented May 29, 2024

In yo langium there is a separate question for inclusion of the cli. Doesn't it therefore makes sense to move cli to its own package?

Yes, that makes sense 👍

@kaisalmen
Copy link
Contributor

Will do, thanks for the feedback 👍

@kaisalmen kaisalmen linked a pull request May 29, 2024 that will close this issue
13 tasks
@kaisalmen
Copy link
Contributor

WIP PR is up. ⬆️ It doesn't work, yet fully. Overall project structure looks good already, though.

@aabounegm
Copy link
Member

Hello @kaisalmen, I was starting a new (my first) Langium project when I noticed this issue and PR, and I was wondering if it is worth waiting for the PR to be merged. I see that all of the TODOs have already been checked, so is there an ETA on when it will be ready to use? It just seems like a very useful refactor to include in my project from the get-go.

@Yokozuna59
Copy link
Contributor

@aabounegm You could use that generator using the PR branch:

git clone https://github.com/eclipse-langium/langium.git
cd langium
git fetch origin refs/pull/1520/head:pr/1520
git switch pr/1520
npm install
npm run build
npm run langium:generate
yo ./packages/generator-langium/app/index.js

Please note that you need to install yo globally:

npm install --global yo

@aabounegm
Copy link
Member

@Yokozuna59 yes I realize that, but thanks for providing the commands and saving me the trouble 😁.
I guess I was mainly wondering if it's ready yet for me to do that or are more changes expected?
I already generated a project (not from the PR) just to explore Langium first, I'm just planning for the actual project after playing around (hopefully really soon, I love Langium already!)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
yeoman Yeoman generator related issue
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants