Open mikew opened 12 months ago
Hmmm, interesting!
I hadn't really thought about that.
I found this online tool which visualises the size:
https://arve0.github.io/npm-download-size/#alias-hq
From that it looks like jscodeshift is maybe 60% of the 5MB install.
I guess I would have to weigh up the pros and cons of whether it actually matters, vs maintaining two separate repositories, docs, issues, awareness, etc.
FWIW the CLI is also used to let folks configure paths and plugins which is nice as adding TS aliases by hand is a bit cumbersome.
Can you make any cases for why saving ~3MB really matters?
Having reviewed my own docs again (it's been a while!) the CLI also helps folks debug their setups, as well as develop and publish plugins, so I think I'll close this issue for now; it's just simpler to keep everything together.
Hopefully a bit of the context there has been helpful though!
Doesn't necessarily have to be two repositories, monorepos exist (but are not without complications, admittedly). Also, you only mentioned jscodeshift when I'm guessing these are only to do with the CLI:
Which account for ~87% of the size. And the original 5MB isn't accurate:
$ du -sh node_modules
520M node_modules
mike at test-vscode-remote-arch in ~/Work/promoboxx/react-scripts-vite (swap-plugins●)
$ pnpm install --save alias-hq
╭──────────────────────────────────────────────────────────────────╮
│ │
│ Update available! 8.6.11 → 8.11.0. │
│ Changelog: https://github.com/pnpm/pnpm/releases/tag/v8.11.0 │
│ Run "pnpm add -g pnpm" to update. │
│ │
│ Follow @pnpmjs for updates: https://twitter.com/pnpmjs │
│ │
╰──────────────────────────────────────────────────────────────────╯
WARN deprecated @babel/plugin-proposal-optional-chaining@7.21.0: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.
WARN deprecated @babel/plugin-proposal-class-properties@7.18.6: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.
WARN deprecated @babel/plugin-proposal-nullish-coalescing-operator@7.18.6: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.
WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
WARN deprecated rollup-plugin-terser@7.0.2: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser
WARN deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
Packages: +156
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 756, reused 724, downloaded 0, added 143, done
dependencies:
+ alias-hq 6.2.3
Done in 5.8s
mike at test-vscode-remote-arch in ~/Work/promoboxx/react-scripts-vite (swap-plugins●)
$ du -sh node_modules
546M node_modules
Edit: Just found about about this tool which seems more accurate: https://pkg-size.dev/alias-hq
That's a nice tool! Though I'm not sure I totally understand the output for our use case; we want to know the total installed size of X vs Y dependencies, right?
So I did a quick test (Basic CLI = plugin management, Full CLI = code refactoring):
Alias | CLI (Basic) | CLI (Full) | |
---|---|---|---|
Deps | 3 | 4 | 7 |
Total Deps | 4 | 95 | 197 |
Size | 504 KB | 30 MB | 58 MB |
So I think this proves your point very well... I'm just not convinced that it warrants a refactor, publishing to separate NPM packages, etc.
Although thinking about it, a workable option might be for developers who wish to create plugins or refactor code to install from GitHub using an alias:
npm i alias-cli@github:davestewart/alias-hq
I've just attempted this, and it works, as in, the user can run the cli:
dave@ds-m3 aliased % npm i alias-cli@github:davestewart/alias-hq
dave@ds-m3 aliased % alias-hq
== Alias HQ ==
-- Main Menu --
? What do you want to do? (Use arrow keys)
❯ - Configure paths
- Help
- Exit
I tell you what, let me experiment with a stripped down version published to a personal namespace, then if it works, I think it could be a nice introduction.
I'm not going to get time to do this probably until Christmas though, but if you don't mind waiting (or installing!) until then, I will defo take a look.
Love the idea of the module, but for people who don't want to use the CLI ... quite a lot of modules are installed:
Yeah it's 48 thousand lines, I can't paste it in GitHub, Gist, or Pastebin, but the bulk of them come from jscodeshift, which isn't needed for people not looking to use the CLI.