Skip to content

fix(build): address problems with typescript compilation#2445

Merged
bcoe merged 4 commits intomainfrom
fix-ts-compilation
Jan 2, 2025
Merged

fix(build): address problems with typescript compilation#2445
bcoe merged 4 commits intomainfrom
fix-ts-compilation

Conversation

@bcoe
Copy link
Member

@bcoe bcoe commented Jan 2, 2025

This addresses bit rot in the rollup compilation, which is used to expose both a CJS and MJS module.

Note

Now that you can require ESM modules in CJS, I think there's an argument for making yargs pure ESM, which would remove the need for this build step, and would reduce the size of yargs by 100%, see:

https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require

@bcoe bcoe requested a review from shadowspawn January 2, 2025 19:30
@shadowspawn
Copy link
Member

Now that you can require ESM modules in CJS, I think there's an argument for making yargs pure ESM

Not sure how aggressively you are considering this, although I know you have been looking forward to pure esm for a long time!

Would you only ship this after feature available without flag or warning in all LTS versions of node?

@bcoe
Copy link
Member Author

bcoe commented Jan 2, 2025

Not sure how aggressively you are considering this, although I know you have been looking forward to pure esm for a long time!

I haven't been doing too much OSS these days (as I'm sure you've noticed). But, I'm pretty serious since having this complicated toolchain to do dual-mode ESM:

  • makes keeping this library building annoying.
  • makes it harder for people to contribute.

Would you only ship this after feature available without flag or warning in all LTS versions of node?

I think if we do it as a major, we could just say you-only-live-once and ship. There's the option of using import.then.

@bcoe bcoe merged commit 8d72fb3 into main Jan 2, 2025
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Jun 1, 2025
| datasource | package | from   | to     |
| ---------- | ------- | ------ | ------ |
| npm        | yargs   | 17.7.2 | 18.0.0 |


## [v18.0.0](https://github.com/yargs/yargs/blob/HEAD/CHANGELOG.md#1800-2025-05-26)

##### ⚠ BREAKING CHANGES

-   command names are not derived from modules passed to `command`.
-   singleton usage of yargs yargs.foo, yargs().argv, has been removed.
-   minimum node.js versions now `^20.19.0 || ^22.12.0 || >=23`.
-   yargs is now ESM first

##### Features

-   commandDir now works with ESM files ([#2461](yargs/yargs#2461)) ([27eec18](yargs/yargs@27eec18))
-   **locale:** adds hebrew translation ([#2357](yargs/yargs#2357)) ([4266485](yargs/yargs@4266485))
-   yargs is now ESM first ([d90af45](yargs/yargs@d90af45))
-   **zsh:** Add default completion as fallback ([#2331](yargs/yargs#2331)) ([e02c91b](yargs/yargs@e02c91b))

##### Bug Fixes

-   addDirectory do not support absolute command dir ([#2465](yargs/yargs#2465)) ([3a40a78](yargs/yargs@3a40a78))
-   allows ESM modules commands to be extensible using visit option ([#2468](yargs/yargs#2468)) ([200e1aa](yargs/yargs@200e1aa))
-   **browser:** fix shims so that yargs continues working in browser context ([#2457](yargs/yargs#2457)) ([4ae5f57](yargs/yargs@4ae5f57))
-   **build:** address problems with typescript compilation ([#2445](yargs/yargs#2445)) ([8d72fb3](yargs/yargs@8d72fb3))
-   coerce should play well with parser configuration ([#2308](yargs/yargs#2308)) ([8343c66](yargs/yargs@8343c66))
-   **deps:** update dependency yargs-parser to v22 ([#2470](yargs/yargs#2470)) ([639130d](yargs/yargs@639130d))
-   exit after async handler done ([#2313](yargs/yargs#2313)) ([e326cde](yargs/yargs@e326cde))
-   handle spaces in bash completion ([#2452](yargs/yargs#2452)) ([83b7788](yargs/yargs@83b7788))
-   parser-configuration should work well with generated completion script ([#2332](yargs/yargs#2332)) ([888db19](yargs/yargs@888db19))
-   propagate Dictionary including undefined in value type ([#2393](yargs/yargs#2393)) ([2b2f7f5](yargs/yargs@2b2f7f5))
-   **zsh:** completion no longer requires double tab when using autoloaded ([0dd8fe4](yargs/yargs@0dd8fe4))

##### Code Refactoring

-   command names are not derived from modules passed to `command`. ([d90af45](yargs/yargs@d90af45))
-   singleton usage of yargs yargs.foo, yargs().argv, has been removed. ([d90af45](yargs/yargs@d90af45))

##### Build System

-   minimum node.js versions now `^20.19.0 || ^22.12.0 || >=23`. ([d90af45](yargs/yargs@d90af45))
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Jun 6, 2025
| datasource | package | from   | to     |
| ---------- | ------- | ------ | ------ |
| npm        | yargs   | 17.7.2 | 18.0.0 |


## [v18.0.0](https://github.com/yargs/yargs/blob/HEAD/CHANGELOG.md#1800-2025-05-26)

##### ⚠ BREAKING CHANGES

-   command names are not derived from modules passed to `command`.
-   singleton usage of yargs yargs.foo, yargs().argv, has been removed.
-   minimum node.js versions now `^20.19.0 || ^22.12.0 || >=23`.
-   yargs is now ESM first

##### Features

-   commandDir now works with ESM files ([#2461](yargs/yargs#2461)) ([27eec18](yargs/yargs@27eec18))
-   **locale:** adds hebrew translation ([#2357](yargs/yargs#2357)) ([4266485](yargs/yargs@4266485))
-   yargs is now ESM first ([d90af45](yargs/yargs@d90af45))
-   **zsh:** Add default completion as fallback ([#2331](yargs/yargs#2331)) ([e02c91b](yargs/yargs@e02c91b))

##### Bug Fixes

-   addDirectory do not support absolute command dir ([#2465](yargs/yargs#2465)) ([3a40a78](yargs/yargs@3a40a78))
-   allows ESM modules commands to be extensible using visit option ([#2468](yargs/yargs#2468)) ([200e1aa](yargs/yargs@200e1aa))
-   **browser:** fix shims so that yargs continues working in browser context ([#2457](yargs/yargs#2457)) ([4ae5f57](yargs/yargs@4ae5f57))
-   **build:** address problems with typescript compilation ([#2445](yargs/yargs#2445)) ([8d72fb3](yargs/yargs@8d72fb3))
-   coerce should play well with parser configuration ([#2308](yargs/yargs#2308)) ([8343c66](yargs/yargs@8343c66))
-   **deps:** update dependency yargs-parser to v22 ([#2470](yargs/yargs#2470)) ([639130d](yargs/yargs@639130d))
-   exit after async handler done ([#2313](yargs/yargs#2313)) ([e326cde](yargs/yargs@e326cde))
-   handle spaces in bash completion ([#2452](yargs/yargs#2452)) ([83b7788](yargs/yargs@83b7788))
-   parser-configuration should work well with generated completion script ([#2332](yargs/yargs#2332)) ([888db19](yargs/yargs@888db19))
-   propagate Dictionary including undefined in value type ([#2393](yargs/yargs#2393)) ([2b2f7f5](yargs/yargs@2b2f7f5))
-   **zsh:** completion no longer requires double tab when using autoloaded ([0dd8fe4](yargs/yargs@0dd8fe4))

##### Code Refactoring

-   command names are not derived from modules passed to `command`. ([d90af45](yargs/yargs@d90af45))
-   singleton usage of yargs yargs.foo, yargs().argv, has been removed. ([d90af45](yargs/yargs@d90af45))

##### Build System

-   minimum node.js versions now `^20.19.0 || ^22.12.0 || >=23`. ([d90af45](yargs/yargs@d90af45))
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Jun 8, 2025
| datasource | package | from   | to     |
| ---------- | ------- | ------ | ------ |
| npm        | yargs   | 17.7.2 | 18.0.0 |


## [v18.0.0](https://github.com/yargs/yargs/blob/HEAD/CHANGELOG.md#1800-2025-05-26)

##### ⚠ BREAKING CHANGES

-   command names are not derived from modules passed to `command`.
-   singleton usage of yargs yargs.foo, yargs().argv, has been removed.
-   minimum node.js versions now `^20.19.0 || ^22.12.0 || >=23`.
-   yargs is now ESM first

##### Features

-   commandDir now works with ESM files ([#2461](yargs/yargs#2461)) ([27eec18](yargs/yargs@27eec18))
-   **locale:** adds hebrew translation ([#2357](yargs/yargs#2357)) ([4266485](yargs/yargs@4266485))
-   yargs is now ESM first ([d90af45](yargs/yargs@d90af45))
-   **zsh:** Add default completion as fallback ([#2331](yargs/yargs#2331)) ([e02c91b](yargs/yargs@e02c91b))

##### Bug Fixes

-   addDirectory do not support absolute command dir ([#2465](yargs/yargs#2465)) ([3a40a78](yargs/yargs@3a40a78))
-   allows ESM modules commands to be extensible using visit option ([#2468](yargs/yargs#2468)) ([200e1aa](yargs/yargs@200e1aa))
-   **browser:** fix shims so that yargs continues working in browser context ([#2457](yargs/yargs#2457)) ([4ae5f57](yargs/yargs@4ae5f57))
-   **build:** address problems with typescript compilation ([#2445](yargs/yargs#2445)) ([8d72fb3](yargs/yargs@8d72fb3))
-   coerce should play well with parser configuration ([#2308](yargs/yargs#2308)) ([8343c66](yargs/yargs@8343c66))
-   **deps:** update dependency yargs-parser to v22 ([#2470](yargs/yargs#2470)) ([639130d](yargs/yargs@639130d))
-   exit after async handler done ([#2313](yargs/yargs#2313)) ([e326cde](yargs/yargs@e326cde))
-   handle spaces in bash completion ([#2452](yargs/yargs#2452)) ([83b7788](yargs/yargs@83b7788))
-   parser-configuration should work well with generated completion script ([#2332](yargs/yargs#2332)) ([888db19](yargs/yargs@888db19))
-   propagate Dictionary including undefined in value type ([#2393](yargs/yargs#2393)) ([2b2f7f5](yargs/yargs@2b2f7f5))
-   **zsh:** completion no longer requires double tab when using autoloaded ([0dd8fe4](yargs/yargs@0dd8fe4))

##### Code Refactoring

-   command names are not derived from modules passed to `command`. ([d90af45](yargs/yargs@d90af45))
-   singleton usage of yargs yargs.foo, yargs().argv, has been removed. ([d90af45](yargs/yargs@d90af45))

##### Build System

-   minimum node.js versions now `^20.19.0 || ^22.12.0 || >=23`. ([d90af45](yargs/yargs@d90af45))
renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Jun 14, 2025
| datasource | package | from   | to     |
| ---------- | ------- | ------ | ------ |
| npm        | yargs   | 17.7.2 | 18.0.0 |


## [v18.0.0](https://github.com/yargs/yargs/blob/HEAD/CHANGELOG.md#1800-2025-05-26)

##### ⚠ BREAKING CHANGES

-   command names are not derived from modules passed to `command`.
-   singleton usage of yargs yargs.foo, yargs().argv, has been removed.
-   minimum node.js versions now `^20.19.0 || ^22.12.0 || >=23`.
-   yargs is now ESM first

##### Features

-   commandDir now works with ESM files ([#2461](yargs/yargs#2461)) ([27eec18](yargs/yargs@27eec18))
-   **locale:** adds hebrew translation ([#2357](yargs/yargs#2357)) ([4266485](yargs/yargs@4266485))
-   yargs is now ESM first ([d90af45](yargs/yargs@d90af45))
-   **zsh:** Add default completion as fallback ([#2331](yargs/yargs#2331)) ([e02c91b](yargs/yargs@e02c91b))

##### Bug Fixes

-   addDirectory do not support absolute command dir ([#2465](yargs/yargs#2465)) ([3a40a78](yargs/yargs@3a40a78))
-   allows ESM modules commands to be extensible using visit option ([#2468](yargs/yargs#2468)) ([200e1aa](yargs/yargs@200e1aa))
-   **browser:** fix shims so that yargs continues working in browser context ([#2457](yargs/yargs#2457)) ([4ae5f57](yargs/yargs@4ae5f57))
-   **build:** address problems with typescript compilation ([#2445](yargs/yargs#2445)) ([8d72fb3](yargs/yargs@8d72fb3))
-   coerce should play well with parser configuration ([#2308](yargs/yargs#2308)) ([8343c66](yargs/yargs@8343c66))
-   **deps:** update dependency yargs-parser to v22 ([#2470](yargs/yargs#2470)) ([639130d](yargs/yargs@639130d))
-   exit after async handler done ([#2313](yargs/yargs#2313)) ([e326cde](yargs/yargs@e326cde))
-   handle spaces in bash completion ([#2452](yargs/yargs#2452)) ([83b7788](yargs/yargs@83b7788))
-   parser-configuration should work well with generated completion script ([#2332](yargs/yargs#2332)) ([888db19](yargs/yargs@888db19))
-   propagate Dictionary including undefined in value type ([#2393](yargs/yargs#2393)) ([2b2f7f5](yargs/yargs@2b2f7f5))
-   **zsh:** completion no longer requires double tab when using autoloaded ([0dd8fe4](yargs/yargs@0dd8fe4))

##### Code Refactoring

-   command names are not derived from modules passed to `command`. ([d90af45](yargs/yargs@d90af45))
-   singleton usage of yargs yargs.foo, yargs().argv, has been removed. ([d90af45](yargs/yargs@d90af45))

##### Build System

-   minimum node.js versions now `^20.19.0 || ^22.12.0 || >=23`. ([d90af45](yargs/yargs@d90af45))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants