TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

The Node ecosystem still has tooling problems

84 pointsby MaxLeiteralmost 3 years ago

26 comments

klodolphalmost 3 years ago
This is really short. I think my complaints, compiled into an article, would probably fill out an article five or ten times as long.<p>There’s just so much shit. Everyone made their own system. There’s .js .ts .mjs .cjs extensions. Theres’s tsc and jest and npx and create-react-app. These are just the tip of the iceberg. If I try to update the build system to use newer versions of the software, all sorts of stuff will break. The really shocking part, for me, is that I feel like it’s easier to set up my build system for C than for JS.
评论 #32290921 未加载
评论 #32292477 未加载
评论 #32291177 未加载
评论 #32291439 未加载
评论 #32294119 未加载
评论 #32292352 未加载
评论 #32290898 未加载
andrew_almost 3 years ago
The node ecosystem doesn&#x27;t have a tooling problem. Frontend development has had a tooling problem since the introduction of React and Angular, and TypeScript. One might argue that goes back as far as CoffeeScript. But can we stop boosting these &quot;OMG this was too hard&quot; posts?<p>TypeScript (tsc) should display a hide-able message on invocation that states: &quot;TypeScript isn&#x27;t straightforward. It&#x27;s a vast ecosystem all its own that accommodates several million developer&#x27;s individual needs. It can be overwhelming. You don&#x27;t have to use it.&quot;<p>I won&#x27;t opine on the dumpster fire that is ESM support in Node - that&#x27;s a completely separate topic and head-through-wall session.
评论 #32291170 未加载
评论 #32291880 未加载
kabdibalmost 3 years ago
I have lost whole consecutive weeks to WebPack. It made me wish I could go back to something wholesome and healthy, like template metaprogramming in C++.<p>&quot;I&#x27;m making progress, boss. The error output from the build is smaller than the input source code now.&quot;
hestefiskalmost 3 years ago
Rant: could we please stop referring to a collection of &lt;X&gt; as an ecosystem? Node has a collection or environment of tools, frameworks and libraries to support it. An ecosystem is something living, a biological system, typically with a set of symbiotic properties within it.<p>The trend is the same in business. Stripe no longer has business partners; they have an “ecosystem.” The same with banks that provide wholesale banking services through a set of retail businesses - they are no longer wholesale banks but “ecosystem players”. This kind of jargon really dilutes the meaning of words and makes it hard to understand what is really meant.<p>Rant over, sorry.<p>Apart from my rant, it’s funny to see Node and JavaScript doing what almost killed Perl 20 years ago. There are so many ways of doing things, so many bespoke frameworks and packages (doing OO in Perl, anyone?), so many odd dialects that it fragmented the language and people got frustrated. The same is happening to JS right now, although with some important differences. There is hardly a fragmentation of usage via formal “dialects” in JS; rather, the problem is in the sprawl of libraries and “infrastructure” services, many of which are solved problems (e.g. Gulp reinventing what Make is really good at; Yarn reinventing what npm is supposed to do, etc). The supposed “ecosystem” is fragmenting day by day from its inherent complexity, and it’s exactly what caused web developers to flee from Perl to more simple, consistent alternatives.
评论 #32294105 未加载
评论 #32294091 未加载
评论 #32293987 未加载
评论 #32294075 未加载
exabrialalmost 3 years ago
&gt; Node is a problem<p>Fixed it for you.<p>The node ecosystem embodies mediocrity. There is no design, no testing, no stability, no benchmarks, no RFCs, no plan to produce a coherent product. Instead, you&#x27;re giving a half baked set of features that are abandoned within 8-12 months. Not invented here syndrome runs wild, and over-engineering any solution is seen as a mark of accomplishment.<p>Simple things, like displaying static text, now require 25mb of js files for whatever framework the author is currently playing around with as a hobby. I miss the days of the web where you could just load a page in under 25kb.
评论 #32293000 未加载
评论 #32292918 未加载
评论 #32299521 未加载
hugozapalmost 3 years ago
Tooling in the JS ecosystem (specially frontend) is very frustrating. It&#x27;s just layers on top of layers with a weak foundation and a whole set of annoying incompatibilities between them.
评论 #32293927 未加载
jitlalmost 3 years ago
The transition to ES6 modules made this much worse. Before that, for a npm package you could basically just call tsc on your entry point and then type `npm publish`. Now with the ES6 situation various dependencies and common packages demand <i>you</i> upgrade to ES6, and customers also ask for import syntax so their builds can do “tree shaking”. I maintain a Emscripten-based typescript library and the Emscripten wrapper code is allergic to ES6 imports - everything breaks if you do that since it removes various node globals. I wasted hours trying to figure out a way around, or a fix in Emscripten itself before giving up.
mhoadalmost 3 years ago
It’s funny I’ve been looking at industrial strength build systems like Bazel (language independent build tool from Google) recently the past few months just to get an idea of how things work in that world.<p>One of the things happening in that community at the moment was their second major attempt to bring the JavaScript &#x2F; Typescript and Node ecosystem onboard as a semi official language. It has been a 4 year effort so far and they had to make a bunch of compromises along the way as you can see in the design section of the projects readme here <a href="https:&#x2F;&#x2F;github.com&#x2F;aspect-build&#x2F;rules_js" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;aspect-build&#x2F;rules_js</a><p>Watching the walls they would continually run into where the answer would essentially be “Node is very unlike other language runtimes” was illuminating and I suddenly started to understand why projects like Deno want to actually leave Node behind as a fundamentally unfixable mess and start again with a bit more planning this time around to avoid all of those issues.
tannhaeuseralmost 3 years ago
T&#x27;was all fine until folks had to come up with useless typescript and modules and webpack churn and Es2015+ bloat. It&#x27;s not like we didn&#x27;t warn them to turn JavaScript into Java; for some of us getting away from Java bloat was the entire point of node.js. Well that, and because CommonJS was portable, or used to be at least. If you want a typed language, just use one, rather than foobaring JavaScript or Python into something they just aren&#x27;t, a fool&#x27;s errand.
评论 #32293313 未加载
评论 #32296674 未加载
评论 #32303308 未加载
spankaleealmost 3 years ago
The problems start with frameworks that require custom compilers and non-standard module systems.<p>If you use vanilla JS in standard modules most of this goes away.
评论 #32292300 未加载
claytongulickalmost 3 years ago
I&#x27;m pretty happy with just vanilla JavaScript.<p>I don&#x27;t do typescript, I don&#x27;t use frameworks (unless you consider express to be a framework).<p>I use vanilla web components on the front end, if I need reactivity and frequent re-renders I might sprinkle in a bit of lit-html, depending on the component.<p>Debugging and development are brain dead simple, just sticking to the standards.<p>I had a new developer come into my code base and he said &quot;I couldn&#x27;t believe it at first, you just write something and it does it... Wow!&quot;.<p>He was so used to piles of frameworks and build systems and stuff, he&#x27;d never been in a code base that just... ran.
trinovantesalmost 3 years ago
I just checked my most recent frontend project that uses Typescript as much as possible. Here&#x27;s how it works:<p>- src&#x2F;.ts: Compile with esbuild in webpack<p>- tests&#x2F;.test.ts: Compiled with babel<p>- jest.config.ts: Compiled with ts-node<p>- webpack.config.ts: Compiled with ts-node<p>In an ideal world, one tool should do everything but I doubt that will ever happen
评论 #32291791 未加载
FractalHQalmost 3 years ago
I use pnpm and Sveltekit and have none of these problems. Everything just works, and it’s rare anything related to tooling takes longer than 1second to accomplish.<p>Being on OSX helps a lot with the “just works” part though.
erikpukinskisalmost 3 years ago
It’s still early days, but I have been working on this…<p>There are scaffolding tools that help configure all the JavaScript frontend stuff you need, but the problem is you run them once and you can’t ever run them again to change&#x2F;add stuff.<p>So I built Confgen which is sort of like create-react-app except it’s idempotent:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;erikpukinskis&#x2F;confgen" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;erikpukinskis&#x2F;confgen</a><p>It’s very alpha, but I would love to get ideas&#x2F; bug reports on GitHub.<p>It’s also currently Vite-only, but I’m open to a possible webpack&#x2F;babel mode in the future.
joshxyzalmost 3 years ago
Keep in mind that most of these are just rants about the developer experience, which is sacrificed in exchange for faster iteration and deployments on majority of business use cases.<p>As a Node.js developer myself I even noticed that some of the best solutions is nodejs plus other language.<p>Examples<p>uwebsockets.js uses some c++ code. it is faster and has better api than express, fastify, hapi, koa, and has builtin websockets support.<p>esbuild uses golang code. it is faster than webpack and babel for bundling and minifying javascript code.
interactivecodealmost 3 years ago
Understandable frustrations but without a comparison to other major languages in the same domain its a bit moot.<p>Is it just the Node ecosystem that has these types of problems?
评论 #32290860 未加载
评论 #32293016 未加载
评论 #32290813 未加载
评论 #32293894 未加载
weaksaucealmost 3 years ago
my big gripe with npm is that the global packages overshadow the local packages... I can&#x27;t understand when that would be a good option other than maybe having an <i>option</i> to do so but not being the default. I can&#x27;t think of another package manager that does this.<p>oh that and installing thousands of packages in the project root instead of a sensible place that could be shared per version like bundler and rubygems.
评论 #32291228 未加载
评论 #32291172 未加载
pfesenmeieralmost 3 years ago
Interested if anyone is using a jsconfig.json and jsdoc comments to do ts typechecking. I found it really easy to setup, I got a lot out of the extra checks, but the practice never really took off with the team of js devs.<p><a href="https:&#x2F;&#x2F;code.visualstudio.com&#x2F;docs&#x2F;languages&#x2F;jsconfig" rel="nofollow">https:&#x2F;&#x2F;code.visualstudio.com&#x2F;docs&#x2F;languages&#x2F;jsconfig</a>
评论 #32293191 未加载
johnnypangsalmost 3 years ago
I saw the author was using vite, they have a mode to help you build a library that would mitigate their woes. Check it out!<p><a href="https:&#x2F;&#x2F;vitejs.dev&#x2F;guide&#x2F;build.html#library-mode" rel="nofollow">https:&#x2F;&#x2F;vitejs.dev&#x2F;guide&#x2F;build.html#library-mode</a>
评论 #32293605 未加载
stoicjumbotronalmost 3 years ago
So what is the &quot;recommended&quot; way to build libraries using TypeScript? I&#x27;ve heard that tsdx <a href="https:&#x2F;&#x2F;tsdx.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;tsdx.io&#x2F;</a> is quite good
phendrenad2almost 3 years ago
I&#x27;ve started using plain old CDN-served React&#x2F;jQuery&#x2F;Lodash to do everything, with no build system, and daring my employer to fire me. So far so good.
rubyist5evaalmost 3 years ago
The node ecosystem is just a giant problem on top of problems.
NonNefariousalmost 3 years ago
Node has been superseded by Deno, right? How about that?
shadycuzalmost 3 years ago
I doubt anyone is interested but I&#x27;m building some tooling for node and npm in jenkins.<p>Just standard stuff, nvm, nodenv, npm and npx wrapper.
moltaralmost 3 years ago
I think projen may solve the configuration and tooling woos. At least I hope it will.
评论 #32292277 未加载
评论 #32291701 未加载
alexashkaalmost 3 years ago
You&#x27;re describing all command line tools and config files.<p>Maybe people will discover GUIs one day, it&#x27;s only been 30 years.
评论 #32292544 未加载
评论 #32291231 未加载