npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@extractorpack/extractorpack

v0.0.5

Published

A power extractor management CLI tool for [discord-player](https://github.com/Androz2091/discord-player)

Downloads

278

Readme

Extractorpack - Imagine an Organized Workspace

A power extractor management CLI tool for discord-player

The Fundemental Problem ...

Let's be real. No one likes managing extractors for discord-player. There are a lot of imports and a lot of calls to player.extractor.register. This begins to make your code cluttered a bit like the following.

import ... from "ext1"
import ... from "ext2"
import ... from "ext3"
import ... from "ext4"
import ... from "ext5"

player.extractor.register(..., {})
player.extractor.register(..., {})
player.extractor.register(..., {})
player.extractor.register(..., {})
player.extractor.register(..., {})

Extractorpack seek to fix this via its CLI tool by installing and writing code at the same time. This is all hidden from the end user so that they can have a seemless experience. With extractorpack, you just need 2 files ...

// main loader file
import { load } from "@extractorpack/extractorpack"

load(player)
// extractorpack.config.mjs
import { defineConfig } from "@extractorpack/extractorpack"

export default defineConfig({})

Installation

[!WARNING] As extractorpack manages local extractors, though it is a commandline tool, it will not work if you globally install it.

npm

$ npm install --save-dev @extractorpack/extractorpack

yarn

$ yarn add -D @extractorpack/extractorpack

Using extractorpack

Before using extractorpack, please make sure to remove any player.extractors.register in your codebase.

Getting started

(WIP) Before using extractorpack, let us make build a structure for it.

$ npx --no extractorpack init

This will create a file named extractorpack.config.mjs and fill it with content similar to below.

import { defineConfig } from "@extractorpack/extractorpack"

export default defineConfig({})

Furthermore, extractorpack will also scan node_modules for any compatible extractors that you have previously installed.

If you want to use an existing project with already made extractorpack.config.mjs, you can use

$ npx --no extractorpack scan

to just use the scanning functionality. This is helpful for already made projects that you are deploying to the cloud. Ensure that this command is ran before building TypeScript to avoid type errors

Installing an extractor

To install an extractor, you can use extractorpack as a package manager on compatible extractors.

$ npx --no extractorpack add discord-player-youtubei

This will automatically add the install the extractor using the package manager your project is configured to use and register it. You can then modify the options for this extractor inside your extractorpack.config.mjs

import { defineConfig } from "@extractorpack/extractorpack"

export default defineConfig({
    "discord-player-youtubei": {
        // HORRAY! Typesafety made possible by extractorpack dynamic code writer
        cookie: ""
    }
})

Removing an extractor

$ npx --no extractorpack remove discord-player-youtubei

Adding your extractor to extractorpack

Due to the extractorpack code writer, you need special variables added to your code.

First are the variables. Create a file named extractorpack.extconfig.mjs and export these variables

// Your main extractor class
export const EXTRACTOR_PACK_CLASS = "YoutubeiExtractor";
// The options for your extractor class. (The T inside BaseExtractor<T>)
export const EXTRACTOR_PACK_EXT_OPTIONS = "YoutubeiOptions";

[!NOTE] The config file can also end in .ts, .js. It is not executed but only read based on the AST.

Then, submit a pull request to the extractorpack repository modifying the COMPATIBLE_EXT.json to add your extractor to it.

Keep in mind that if a version field is a GitHub URL and your extractor uses TypeScript, you must add a prepare script to npm lifecycle in order for it to be used. This script will build your extractor.