Make NPM great Again!
Hello! This project is created to show how NPM packages could work if they would be refactored and made properly.
Project it's made by Community and is not related with official NPM.
- Documentation is outdated
- Types are outdated
- Not friendly for developers to use it as Dependency
- Not minified
- 100% original functionality (Maybe extras sometimes)
- Typescript as Base
- Make Dependencies easier in use for developers of external packages
- Up-to-date documentation
- Correct types
- Minimal usage of External Packages
About:
- 📘 Docs (External documentation) (in soon)
About packages:
- 📖 TSDocs (Internal documentation)
- ♻️ Minified
⚠️ Error Handler (Custom -oh-my-error
, why this?)- ✅ Support JS/TS & CJS/ESM
- 🐒 Rewriten Test units from tap -> vitest
- 📝 Debug Logging (Only for CLI commands)
Emoji | Meaning |
---|---|
✅ | Completed |
⏸️ | Paused |
❌ | Aborted |
🛠️ | In Progress |
💤 | Not Yet Started |
Category | Functionality | (Original) Package name | (Better) Package name | Progress Status |
---|---|---|---|---|
📦 Package Management | 🔍 Validates NPM package names | validate-npm-package-name | @betternpm/validate-npm-package-name | ✅ |
📦 Package Management | 📥 NPM API (programmatic) Package download and extraction | pacote | @betternpm/pacote | 💤 |
📦 Package Management | 🎁 Create NPM packages | libnpmpack | @betternpm/libnpmpack | 💤 |
📦 Package Management | 🏷️ Parse package names and specifiers | npm-package-arg | @betternpm/npm-package-arg | 💤 |
📦 Package Management | 🌿 Manage package dependencies | @npmcli/arborist | @betternpm/@npmcli/arborist | 💤 |
📦 Package Management | 🏁 Initialize package.json files | init-package-json | @betternpm/init-package-json | 💤 |
📦 Package Management | 🎯 Select best matching package manifest | npm-pick-manifest | @betternpm/npm-pick-manifest | 💤 |
📦 Package Management | 🔍 Verify package installation integrity | npm-install-checks | @betternpm/npm-install-checks | 💤 |
📦 Package Management | 📝 Read and write package.json files | @npmcli/package-json | @betternpm/@npmcli/package-json | 💤 |
📦 Package Management | 🔧 Normalize package metadata | normalize-package-data | @betternpm/normalize-package-data | 💤 |
🌐 Registry and API Interaction | 🏛️ NPM organization management | libnpmorg | @betternpm/libnpmorg | 💤 |
🌐 Registry and API Interaction | 🔍 Compare NPM packages | libnpmdifference | @betternpm/libnpmdifference | 💤 |
🌐 Registry and API Interaction | 🕵️ Search NPM packages | libnpmsearch | @betternpm/libnpmsearch | 💤 |
🌐 Registry and API Interaction | 🚀 Publish NPM packages | libnpmpublish | @betternpm/libnpmpublish | 💤 |
🌐 Registry and API Interaction | 🔄 Interact with npm registry API | npm-registry-fetch | @betternpm/npm-registry-fetch | 💤 |
🔢 Version Management | 📊 Semantic versioning utility | semver | @betternpm/semver | ✅ |
🔢 Version Management | 🏷️ NPM package versioning | libnpmversion | @betternpm/libnpmversion | 💤 |
🔐 Security and Access Control | 🔒 Subresource Integrity | ssri | @betternpm/ssri | 💤 |
🔐 Security and Access Control | 🔑 NPM package access management | libnpmaccess | @betternpm/libnpmaccess | 💤 |
🔐 Security and Access Control | 🕶️ Redact sensitive information | @npmcli/redact | @betternpm/@npmcli/redact | 💤 |
🔐 Security and Access Control | 📊 Generate npm audit reports | npm-audit-report | @betternpm/npm-audit-report | 💤 |
👥 User and Team Management | 👪 NPM team management | libnpmteam | @betternpm/libnpmteam | 💤 |
👥 User and Team Management | 👨💼 NPM user profile management | npm-profile | @betternpm/npm-profile | 💤 |
👥 User and Team Management | ✅ Validate npm usernames | npm-user-validate | @betternpm/npm-user-validate | 💤 |
🏃 Script and Process Execution | libnpmexec | @betternpm/libnpmexec | 💤 | |
🏃 Script and Process Execution | @npmcli/run-script | @betternpm/@npmcli/run-script | 💤 | |
🏃 Script and Process Execution | 🚀 Spawn processes with Promises | @npmcli/promise-spawn | @betternpm/@npmcli/promise-spawn | 💤 |
💾 File System and Caching | 🗄️ Content-addressable cache | cacache | @betternpm/cacache | 💤 |
💾 File System and Caching | 📂 File system operations | fs | @betternpm/fs | 💤 |
💾 File System and Caching | 🔄 File system streams | fs-minipass | @betternpm/fs-minipass | 💤 |
💾 File System and Caching | ✍️ Atomically write files | write-file-atomic | @betternpm/write-file-atomic | 💤 |
⚙️ Configuration and Settings | 📝 INI file parser and serializer | ini | @betternpm/ini | 💤 |
⚙️ Configuration and Settings | 🛠️ NPM configuration management | @npmcli/config | @betternpm/@npmcli/config | 💤 |
🗺️ Workspace and Repository Management | ℹ️ Git repository information | hosted-git-info | @betternpm/hosted-git-info | 💤 |
🗺️ Workspace and Repository Management | 🗂️ Map npm workspaces | @npmcli/map-workspaces | @betternpm/@npmcli/map-workspaces | 💤 |
🌐 Networking | 🚚 HTTP/HTTPS requests with caching | make-fetch-happen | @betternpm/make-fetch-happen | 💤 |
📊 Logging and Reporting | 📝 Process logging utility | proc-log | @betternpm/proc-log | 💤 |
🔍 Utility Functions | ⌨️ Command-line option parsing | nopt | @betternpm/nopt | 💤 |
🔍 Utility Functions | 📖 Read user input from console | read | @betternpm/read | 💤 |
🔍 Utility Functions | 🔎 Locate command in system PATH | which | @betternpm/which | 💤 |
🔍 Utility Functions | 🔤 String abbreviation | abbrev | @betternpm/abbrev | 💤 |
🔍 Utility Functions | 🚶 Walk tree-like structures | treeverse | @betternpm/treeverse | 💤 |
🔍 Utility Functions | 💸 Handles dependency funding | libnpmfund | @betternpm/libnpmfund | 💤 |
🔍 Utility Functions | 🎣 NPM hooks management | libnpmhook | @betternpm/libnpmhook | 💤 |
🔍 Utility Functions | 🔀 Parse JSON with conflict markers | parse-conflict-json | @betternpm/parse-conflict-json | 💤 |
🔍 Utility Functions | 🐛 Improve JSON parsing errors | json-parse-even-better-errors | @betternpm/json-parse-even-better-errors | 💤 |