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

[Feature] add builder option to produces esbuild's metafile #6211

Closed
2 tasks done
jkowalleck opened this issue Apr 8, 2024 · 0 comments · Fixed by #6212
Closed
2 tasks done

[Feature] add builder option to produces esbuild's metafile #6211

jkowalleck opened this issue Apr 8, 2024 · 0 comments · Fixed by #6212
Labels
enhancement New feature or request

Comments

@jkowalleck
Copy link
Contributor

  • I'd be willing to implement this feature (contributing guide)
  • This feature is important to have in this repository; a contrib plugin wouldn't do

Describe the user story

As a plugin developer who uses @yarnpkg/builder@^4 to build the plugin I wrote, I want to have access to eslint's metafile, so that I can use it in additional tooling and analysis.

Describe the solution you'd like

Have a CLI switch, that enables eslint's metafile.
Something along builder build plugin --metafile.
The CLI switch would be "disabled" by default, meaning no file is written.
If the CLI switch is set to "true", then esbuild's metafile is written to bundles/${name}.meta.json.

Describe the drawbacks of your solution

This described solution would add a new optional CLI switch. If not used, it would not change any o current behaviors,
There should be no drawbacks with that, except that it keeps the current "vendor lock-in" with esbuild

Describe alternatives you've considered

I thought about having an option to pass basic esbuild config into the build command, which then is merged/overwritten by yarn specific settings, and the result is applied to esbuld.
The settings could be stored in the yarnrc file in a section called builder-build with a subsection per purpose (plugin or bundle).
This would open up a lot of custom options, true, but it would require people to learn the external structure and documentation and the whole exbild API - and be just not starter-friendly.
And most importantly, this all needs to work with possible custom injects into builder - which all is much too complicated for the small goal i had.

@jkowalleck jkowalleck added the enhancement New feature or request label Apr 8, 2024
arcanis pushed a commit that referenced this issue Apr 10, 2024
**What's the problem this PR addresses?**
<!-- Describe the rationale of your PR. -->
<!-- Link all issues that it closes. (Closes/Resolves #xxxx.) -->

resolves #6211

...

**How did you fix it?**

- added a boolean CLI switch to `builder build {bundle,plugin}` called
`--metafile`, defaults to `false`
- if CLI switch 
  - is `false`,  then the `esbuild` in instructed to NOT emit `metafile`
  - is `true`, then ...
    - the `esbuild` in instructed to emit `metafile`
- the `metafile` data is written to target file
`bundles/${name}.meta.json`
    - the target file is announced in the summary  
      example ourput:   
      ```shellSession
      $ builder build plugin --metafile 
      ➤ YN0000: ┌ Building @yarnpkg/plugin-cyclonedx
      ➤ YN0000: └ Completed in 8s 619ms
      
      ➤ YN0000: ✓ Done building @yarnpkg/plugin-cyclonedx!
➤ YN0000: ? Bundle path:
/.../cyclonedx-node-yarn/bundles/@yarnpkg/plugin-cyclonedx.js
      ➤ YN0000: ? Bundle size: 771.52 KiB
➤ YN0000: ? Bundle meta:
/.../cyclonedx-node-yarn/bundles/@yarnpkg/plugin-cyclonedx.meta.json
      ```
 
<!-- A detailed description of your implementation. -->

...

**Checklist**
<!--- Don't worry if you miss something, chores are automatically
tested. -->
<!--- This checklist exists to help you remember doing the chores when
you submit a PR. -->
<!--- Put an `x` in all the boxes that apply. -->
- [x] I have read the [Contributing
Guide](https://yarnpkg.com/advanced/contributing).

<!-- See
https://yarnpkg.com/advanced/contributing#preparing-your-pr-to-be-released
for more details. -->
<!-- Check with `yarn version check` and fix with `yarn version check
-i` -->
- [x] I have set the packages that need to be released for my changes to
be effective.

<!-- The "Testing chores" workflow validates that your PR follows our
guidelines. -->
<!-- If it doesn't pass, click on it to see details as to what your PR
might be missing. -->
- [x] I will check that all automated PR checks pass before the PR gets
reviewed.

---------

Signed-off-by: Jan Kowalleck <[email protected]>
Co-authored-by: merceyz <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant