{"id":14155512,"url":"https://github.com/krzkaczor/ny","last_synced_at":"2025-04-12T03:30:58.912Z","repository":{"id":189472252,"uuid":"680741487","full_name":"krzkaczor/ny","owner":"krzkaczor","description":"🗽 Fast, Proxy Package Manager for JavaScript","archived":false,"fork":false,"pushed_at":"2023-11-05T10:08:47.000Z","size":347,"stargazers_count":93,"open_issues_count":13,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-25T23:22:14.669Z","etag":null,"topics":["bun","javascript","nodejs","npm","package-manager","pnpm","yarn"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/krzkaczor.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-20T08:46:28.000Z","updated_at":"2024-11-30T05:46:05.000Z","dependencies_parsed_at":"2024-07-12T01:42:05.972Z","dependency_job_id":"9d811e86-f5d4-453a-a3bf-0700dca91bb8","html_url":"https://github.com/krzkaczor/ny","commit_stats":null,"previous_names":["krzkaczor/ny"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krzkaczor%2Fny","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krzkaczor%2Fny/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krzkaczor%2Fny/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krzkaczor%2Fny/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krzkaczor","download_url":"https://codeload.github.com/krzkaczor/ny/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248512497,"owners_count":21116613,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bun","javascript","nodejs","npm","package-manager","pnpm","yarn"],"created_at":"2024-08-17T08:03:45.058Z","updated_at":"2025-04-12T03:30:57.949Z","avatar_url":"https://github.com/krzkaczor.png","language":"Rust","funding_links":[],"categories":["package-manager"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/hero.png\"\u003e\n  \u003ch2 align=\"center\"\u003e🗽 NY - Fast, Proxy Package Manager for JavaScript\u003c/h2\u003e\n  \u003ch4 align=\"center\"\u003eChooses the right package manager and runtime based on the lockfile\u003c/h3\u003e\n  \u003cp align=\"center\"\u003e\u003ci\u003e\u003cstrong\u003en\u003c/strong\u003e\u003c/i\u003eode • \u003ci\u003e\u003cstrong\u003ey\u003c/strong\u003e\u003c/i\u003earn • pnpm • bun\u003c/p\u003e\n\u003c/p\u003e\n\n## Features\n\n- \u003cstrong\u003eUniversal\u003c/strong\u003e - Picks the right package manager and runtime based on the lockfile. `npm`, `bun`, `pnpm`, `yarn` - we got you covered!\n- \u003cstrong\u003eVersatile\u003c/strong\u003e - Handles the basics like installing all your dependencies, adding new packages, and kicking off scripts.\n- \u003cstrong\u003eSpeedy\u003c/strong\u003e - Crafted in Rust to give you a quick ride. When running scripts, it's actually faster than using PMs directly!\n- \u003cstrong\u003eTypeScript-Ready\u003c/strong\u003e - Adding a new dependency? Don't worry! It'll fetch any missing `@types` packages for you if needed.\n\n## Usage\n\n```sh\nny # installs all dependencies eq. to: yarn install\n```\n\n```sh\nny add zod # installs zod package eq. to: yarn add zod\n```\n\n```sh\nny test # executes package.json's test script eq. to: yarn test\n```\n\n```sh\nny vitest # executes node_modules/.bin binary eq. to: yarn vitest\n```\n\n## Installation\n\n### Install script\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/krzkaczor/ny/main/install.sh | bash\n```\n\n### Manually download binary for Linux / Mac Os X\n\nGet the newest release from [releases page](https://github.com/krzkaczor/ny/releases).\n\n## CLI\n\nFor full documentation run `ny --help`.\n\n- `ny install` - trigger installing all dependencies. Aliased to: `ny`.\n- `ny add package` - add new dependency, supports flags like `--dev` and `--workspace-root`. Will automatically install missing TypeScript `@types` packages.\n- `ny run task` - runs a task with a given name or resolves a JS file in `node_modules/bin`. Will use node.js to execute it by default unless bun lockfile is present. Aliased to: `ny task`.\n\n## Dive deeper\n\n### Motivation\n\nIn the world of JavaScript, there's a fun mix of package managers - npm, yarn, pnpm. Pick your poison. With a rise of alternative runtimes like Bun or Deno the problem only gets worse. Programmers often switch between projects that use different PMs multiple times a day. Did you just typed `npm` when the project uses `bun`? Well too bad -- you've wasted couple of seconds again. With 🗽NY, there's no guesswork. Just type `ny` and it picks the right package manager and runtime for you. Handy, right?\n\nAnd here's the kicker: 🗽NY is faster! Especially when running package scripts (like when you type `yarn test`). It's written in Rust and it zips through tasks about ~200ms faster by avoiding spawning node processes just to parse `package.json`. Sweet, huh?\n\nMain sources of inspiration were [antfu/ni](https://github.com/antfu/ni) (but it's written in JS) and [egoist/dum](https://github.com/egoist/dum) (but it's only a task runner).\n\n### TypeScript support\n\nIf `ny` detects that it's running in TypeScript enabled package, it will attempt to install missing typings when adding new packages. Right now this behaviour can't be turned off.\n\n### Contributing\n\nAll contributions are welcomed! [Read contributing guide for more](./contributing.md).\n\n### Logo\n\nLogo should depict a statue of liberty (a symbol of \u003cstrong\u003eN\u003c/strong\u003eew \u003cstrong\u003eY\u003c/strong\u003eork ;) ) holding tools. Midjourney prompt goes something like: `simple mascot, statue of liberty holding tools, pixelart style`. Later [vectorizer.ai](https://vectorizer.ai) was used to get SVG out of bitmap.\n\nI know it's not perfect and if you figure out a better prompt let me know!\n\n## License\n\n[Kris Kaczor](https://twitter.com/krzkaczor) | MIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrzkaczor%2Fny","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrzkaczor%2Fny","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrzkaczor%2Fny/lists"}