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

@codeshareme/codeshare-cli

v1.1.3

Published

Official CLI for codeshare.me — push, pull and version-control your code snippets

Readme

@codeshareme/codeshare-cli

Official CLI for codeshare.me — version-control your code snippets directly from the terminal.

Push, pull, diff and track the history of your CodeShare snippets just like you would with Git — without needing Git.


Table of Contents


Installation

npm install -g @codeshareme/codeshare-cli

Verify:

cs --version
cs --help

Authentication

  1. Log in to codeshare.me and go to Settings → Personal Access Tokens
  2. Enter a name (e.g. my-laptop) and click Generate Token
  3. Copy the token immediately — it is shown only once
  4. Run:
cs login --token <your-token>

Your token is stored in ~/.codeshare/config.json with 600 permissions (readable only by you).


Quick Start

# Authenticate
cs login --token cs_xxxxxxxxxxxxxxxxxxxxxx

# Create a new snippet linked to this directory
cd my-project
cs init --title "My Awesome Project"

# Upload your files as version 1
cs push

# Make changes, then push again with a tag
cs push --tag "v1.1"

# See version history
cs log

# Diff version 1 vs 2
cs diff 1 2

# Check if local files are in sync with the latest push
cs status

# Open the snippet in your browser
cs open

Commands

login

Save your personal access token locally.

cs login --token <token>
cs login --token <token> --host https://codeshare.me

| Option | Description | |---|---| | --token <token> | Personal access token from codeshare.me/settings | | --host <url> | Override API host (default: https://codeshare.me) |


logout

Remove the saved token from your machine.

cs logout

whoami

Show who you are currently logged in as.

cs whoami
Logged in as johndoe
  Host:  https://codeshare.me
  Token: cs_abc123...

init

Create a new snippet on CodeShare and link the current directory to it. A .csproject file is written in the current folder.

cs init
cs init --title "React Auth Flow"
cs init --title "My API" --private
cs init --id <existing-snippet-id>

| Option | Description | |---|---| | --title <title> | Snippet title (prompted if omitted) | | --id <id> | Link to an existing snippet instead of creating a new one | | --private | Create as private (default: public) | | --description <desc> | Set description |

Running cs init also creates a .csignore template in the directory.


push

Scan the current directory, upload all files, and create a new version snapshot.

cs push
cs push --tag "v1.0"
cs push --dry-run
cs push --watch

| Option | Description | |---|---| | -m, --message <msg> | Version message (default: "Update") | | --tag <name> | Tag this version (e.g. v1.0, stable) | | --dry-run | Show what would be uploaded without pushing | | --watch | Watch for file changes and auto-push on save | | --dir <dir> | Directory to push (default: current) | | [snippetId] | Override the target snippet ID |

What gets uploaded:

  • All text files in the directory (recursively)
  • Respects .gitignore and .csignore
  • Skips: node_modules, dist, build, .git, .env, lock files, binary files

Limits: max 500 files · 512 KB per file · 50 MB total per push

Each push creates a new immutable version. You can always roll back.

Dry run example:

Dry run — would push 5 file(s) to snippet 498197a7-...:

  .csignore         0.3 KB
  README.md         1.2 KB
  package.json      0.8 KB
  src/index.ts      4.1 KB   [main]
  src/utils.ts      2.0 KB

pull

Download the latest files from your snippet into the current directory.

cs pull
cs pull <snippetId>
cs pull --dir ./target-dir

| Option | Description | |---|---| | --dir <dir> | Target directory (default: current) |

Existing files are overwritten. Files not present in the snippet are left untouched.


clone

Clone any public or private (owned) snippet into a new directory.

cs clone <snippetId>
cs clone <snippetId> ./my-dir

A .csproject file is written so you can cs push changes back (requires ownership).


status

Compare your local files against the latest pushed version.

cs status
cs status <snippetId>
Changes since version 3 (2 file(s)):
  ~ modified  src/index.ts
  + added     src/utils.ts

Or when clean:

✓ Clean — up to date with version 3

log

Show the version history of the current snippet.

cs log
cs log <snippetId>
Version history for 498197a7-...:

v3 [stable] — Mar 11, 2026, 3:42 PM
  refactor: split into modules

v2 — Mar 10, 2026, 11:20 AM
  add error handling

v1 — Mar 9, 2026, 9:05 AM
  Update

diff

Show line-level changes between two versions (unified diff format).

cs diff <v1> <v2>
cs diff 1 3
cs diff 2 3 <snippetId>
Index: src/index.ts
===================================================================
--- src/index.ts        v1
+++ src/index.ts        v2
@@ -6,4 +6,7 @@
   res.send('Hello!');
 });

+app.use(express.json());
+
 app.listen(3000);


+++ src/utils.ts (added)

checkout

Restore a specific version to your local directory.

cs checkout <version>
cs checkout <version> <snippetId>
cs checkout 2 --dir ./restore-here

| Option | Description | |---|---| | --dir <dir> | Directory to write files into |

Warning: Local files will be overwritten. Run cs push afterwards to create a new version from the restored state.


list

Show all your snippets with file counts and URLs.

cs list
cs list --limit 20
cs list --page 2

| Option | Description | |---|---| | --limit <n> | Results per page (default: 10) | | --page <n> | Page number (default: 1) |

Your snippets (47 total):

  public  [project] My API Server · 12 files  Mar 11, 2026
           https://codeshare.me/c/498197a7-...
  private [single]  Auth Helper  Mar 10, 2026
           https://codeshare.me/c/3a7fe3ee-...

  Run: cs list --page 2 for more

rename

Rename a snippet.

cs rename "New Title"
cs rename "New Title" <snippetId>

publish / unpublish

Toggle the visibility of a snippet.

cs publish            # make public
cs unpublish          # make private
cs publish <snippetId>

delete

Permanently delete a snippet. Asks for confirmation unless --force is used.

cs delete
cs delete <snippetId>
cs delete --force

This action is irreversible. All versions and files are deleted.


open

Open the snippet in your browser.

cs open
cs open <snippetId>

File Filtering

The CLI automatically ignores common files. Add your own exclusions with a .csignore file (same syntax as .gitignore):

# .csignore
secrets/
coverage/
*.key
*.pem
data/*.csv

Always ignored by default:

| Category | Patterns | |---|---| | Version control | .git, .svn, .hg | | Dependencies | node_modules, vendor/, .bundle/, __pycache__ | | Build output | dist, build, .next, out, .nuxt, .cache | | Environment | .env, .env.* (except .env.example) | | Lock files | *.lock, package-lock.json, pnpm-lock.yaml | | Logs | *.log | | OS files | .DS_Store, Thumbs.db | | Binary files | *.png, *.jpg, *.pdf, *.exe, *.zip, *.wasm, fonts, etc. | | CLI config | .csproject |

Your .gitignore is also respected automatically.


.csproject File

When you run cs init or cs clone, a .csproject file is created:

{
  "id": "a1b2c3d4-...",
  "title": "My Project"
}

This file links your local directory to a CodeShare snippet. It is safe to commit to Git.


Limits

| Limit | Value | |---|---| | Max files per push | 500 | | Max file size | 512 KB | | Max total push size | 50 MB | | Max push operations | 30 per minute | | Max active tokens | 10 per account |


Supported Languages

The CLI detects language from file extension automatically. 100+ types supported:

Web: TypeScript · JavaScript · TSX/JSX · HTML · CSS · SCSS · Sass · Less · Stylus · Vue · Svelte · Astro · MDX
Backend: Python · Go · Rust · Java · C# · C · C++ · PHP · Ruby · Swift · Kotlin · Dart · Groovy
Functional/FP: Haskell · Elixir · Erlang · Clojure · F# · OCaml · Scala · Elm · Racket · Scheme · Lisp
Scripting: Bash · Zsh · Fish · PowerShell · Batch/CMD · Lua · Perl · R · Julia · Nim · CoffeeScript
Low-level: Assembly · Objective-C · Zig · D · Crystal
Data/Config: JSON · YAML · TOML · XML · INI · .env · CSV · GraphQL · Protocol Buffers
Infra/DevOps: Terraform/HCL · Dockerfile · Makefile · Nix · Nginx config
DB/ORM: SQL · Prisma
Docs: Markdown · MDX · reStructuredText · LaTeX · AsciiDoc
Misc: Vim Script · Diff/Patch · Solidity

Auto-detected exact filenames: Dockerfile · Makefile · Gemfile · Vagrantfile · Jenkinsfile · Brewfile · Procfile · Cargo.toml · go.mod · .gitignore · .editorconfig · .htaccess · package.json · tsconfig.json · requirements.txt


Requirements

  • Node.js 18 or later
  • A codeshare.me account
  • A Personal Access Token (from Settings → Personal Access Tokens)

License

MIT © codeshare.me