Upcoming breaking changes for NPM v12
Posted by plasma 3 hours ago
Comments
Comment by tuckwat 48 seconds ago
Comment by Tiberium 2 hours ago
Comment by mort96 2 hours ago
Comment by petetnt 1 hour ago
Comment by mort96 1 hour ago
Comment by inopinatus 11 minutes ago
Comment by behindsight 22 minutes ago
"retired" is probably a followup to functionality that was "deprecated".
I agree "breaking" would be clearer
Comment by sheept 1 hour ago
[0]: https://github.blog/changelog/2025-05-05-improvements-to-cha...
Comment by thatmf 37 minutes ago
Nice that they're following pnpm's lead on this after [checks watch]... 18 months?
Comment by efortis 2 hours ago
Comment by karakanb 1 hour ago
Is there a linter that could be used for scenarios like this to prevent unsafe default on package manager config?
Comment by aniceperson 2 hours ago
Comment by ralph84 25 minutes ago
Comment by materielle 3 minutes ago
Software projects will grow in complexity to consume whatever budget you give it. If you hire 50 devs and give them a bunch of business objectives, they are going to do what they do and write a ton of software.
It’s not obvious to me that it would be theoretically impossible to build a cheaper package manager.
Comment by shagie 1 hour ago
Some of it aged... interesting.
Top comment:
> Microsoft doesn’t do everything right but the GitHub acquisition has honestly gone better than I ever expected. Rather than forcing GitHub to adopt Microsoft centric policies, Microsoft has adopted more GitHub stuff, especially from a product POV. GitHub still runs as a separate company (different logins and health care and hiring systems) with its own policies and point of view.
> ...
Comment by w29UiIm2Xz 1 hour ago
Comment by shimman 53 minutes ago
Comment by joeyhage 2 hours ago
Comment by BowBun 2 hours ago
Comment by heldrida 1 hour ago
Couldn’t this effectively result in the same process we get in pre-12 defaults?
Comment by ComputerGuru 1 hour ago
Comment by Zopieux 1 hour ago
Comment by dawnerd 1 hour ago
Comment by cute_boi 2 hours ago
Comment by geophph 48 minutes ago
Comment by KolmogorovComp 1 hour ago
A better safety net would be to require active 2FA proof for every package update.
Comment by therealmarv 3 minutes ago
You want delays by x days because supply chain attacks get caught very often within 1-2 days. And if you really really want to make an exception for a zero day then that's no problem and you can still quick patch by exclusion of that rule. They don't contradict in a unsolvable problem. You want both, you get both.
Comment by jnwatson 1 hour ago
Comment by alexdns 53 minutes ago
Comment by therealmarv 1 minute ago
Comment by gbear605 36 minutes ago
Comment by TZubiri 2 hours ago
Comment by semiquaver 1 hour ago
Comment by grassfedgeek 1 hour ago
Comment by tabwidth 39 minutes ago
Comment by TZubiri 1 minute ago
Comment by TZubiri 4 minutes ago
Most packages are imported via import/require, even if it's a browser only package. Because of SSR and reasons.
Or maybe not, let's look at a random browser only example, angular and react will use SSR, so they will execute in the server, let's check Jquery:
https://www.npmjs.com/package/jquery
Docs suggest just using a script tag instead of npm, when using npm install, they suggest to run import statement, which can execute arbitrary code.
The bottom line seems to be that if you are using npm, it's cause you are using node, and therefore you will run the imported code in the server, otherwise you would use a script tag.
But maybe there's a way to define a browser only package or .js URL such that it is only downloaded and served but never executed server side?
In any case, not a huge usecase of npm, which again, is designed for node which is backend.
Randome example,
include
Comment by WatchDog 38 minutes ago
There is plenty of malicious stuff you can do from the browser.
Comment by christophilus 2 hours ago
Comment by insanitybit 1 hour ago
The dev has to be responsible for ensuring that their build scripts are safe, I need to be responsible for ensuring that my runtime is safe.
It'd be great to have more tools for untrusting libraries (iframes are awesome for this on the frontend) but this is still a massive win.
Comment by Someone1234 1 hour ago
Without that, this just comes across like unconstructive commentary.
This moves the needle a little your proposals or the lack thereof don’t move it at all. So I’ll take this over nothing.
Comment by spartanatreyu 37 minutes ago
It's node + npm compatible and its permission system locks everything down by default.
If you know ahead of time, you can turn on which permissions something is supposed to have in the config file.
Or you can just not use a config file at all. Anytime it needs a permission: it asks you what it wants. You can say yes or no, and those are saved in the config file for next time. If you say no, the script throws an error where it tried to access something it didn't have permission for.
---
Example:
- My linter wants access to my file system?
- You can have read access to ./src/ts/
- My bundler wants read and write access to my file system? - You can have read access to ./src/ts and write access to ./build-output
- Huh, what's that? The bundler was trying to both read and write a file in ./src/ts?
- We don't want input files getting overwritten, that's a recipe for hard-to-diagnose race conditions. Looks like the permission system did more than just keep things secure, it's like a type system for IO.
- Oh, look at that, there was a very subtle bundler misconfig, let me fix that now. How long would that have existed if we didn't use deno...
- Oh what's this? An updated dependency I've been using for 6 months suddenly asking for access to my .env file, and asking to run curl in a separate process? How about "no". Why would a simple DOM utility dependency be asking for those permissions? Ah, looks like it was part of a credential stealing supply chain attack. Glad I wasn't using node.---
Addendum: Node now has a permission system, but it's broken by design so it's useless.
Comment by mschuster91 1 hour ago
Comment by jffry 36 minutes ago
Together with a lockfile that does achieve "package xyz postinstall allowed with hash <1234>"
Comment by themafia 45 minutes ago
Finally.