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 🙏

© 2024 – Pkg Stats / Ryan Hefner

chuck-steve

v0.1.1-double.secret.alpha

Published

A command line package manager for the ChucK language

Downloads

20

Readme

Steve

ChucK has no package manager but I want one. npm is basically magic and could be used with a couple of changes.

Steve is nice implementation of those changes.

All of this is double secret alpha and I decided to write out the README on how it's going to eventually work before doing the implementation. Call it a spec or wishful thinking or unbridled optimism or notes on a bar napkin. You should assume everything in this README is a lie unless it has a :shipit: next to it

Steve commands

steve init :shipit:

A thin wrapper for npm init. There are a couple of differences

  1. index.ck will be the default for main
  2. The start/watch/prepulish scripts will be prepopulated using steve commands
  3. There won't be any mention of test commands (one day I may write a runner/assertion library)
steve package :shipit:
  1. Creates the package folder or clears it if it exists
  2. Looks at initialze.ck and takes a note of the files to be loaded
  3. Copies each of the files found in the above step into the package folder prepending the order in 000_ fashion
steve start [args]
  1. Starts a ChucK vm
  2. Adds all dependencies from package.json to the vm by crawling node_modules/**/package/*.ck (plus their dependencies)
  3. Adds initialize.ck to the vm
  4. Adds the main file (default: index.ck) to the vm passing args when it does

A small note on dependencies
Since ChucK has no concept of namespaces or scope if the same dependency is required by the package or packages it depends on and they differ by a major version steve will refuse to start the app. If they have the same major version steve will only load the highest version. You should follow semver and backwards compatibility religiously.

steve publish

A thin wrapper for steve package && npm publish;

steve test :shipit:

lol ChucK

Everything Else

Everything else works just like npm.

Parts of a steve package

initialize.ck

This contains the list of ChucK files in the package in the order they need to be added to the VM. They should be in any of the following format

Machine.add(me.dir()+"subfolder/**/File.ck");
Machine.add(me.dir() + "subfolder/**/File.ck");
Machine.add("./subfolder/**/File.ck");

Any referenced packages will be added to the VM before the files in the initialize.ck file.

This pattern was established in the book Programming for Musicians and Digital Artists: Creating music with ChucK.

index.ck

This is by default the main file for ChucK packages. There is no need to include it in the initialze.ck file. It will always be the last file added to the ChucK vm and when steve watch is called and it will be the reloaded when any changes are registered. If you want to use another file for this purpose then you should define it in your package.json file. Any arguments passed to steve start will be forwarded to this file when it's added to the vm.