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

shipmast

v0.0.1

Published

Automated License & Metadata applicators for Codebases.

Downloads

17

Readme

shipmast

archetype: Automated License & Metadata Generator for Codebases dev: https://github.com/alexstevovich/shipmast-node cli: https://github.com/alexstevovich/shipmast-cli-node

shipmast inserts and updates license headers, metadata, and file tracking information across your codebase.

Features

  • Automated License & Metadata Injection – Adds customizable info blocks to your files.
  • Customizable Templates – Define exactly how metadata should be formatted.
  • Bulk Processing – Update entire repositories with a single command.
  • Self-Healing Data – Automatically maintains file-specific metadata across updates.

Installation

npm install -D shipmast

The -D flag is recommended as shipmast is typically used in development.

Usage

Importing Shipmast

import shipmast from  'shipmast';

Applying Metadata to a Single File

To inject metadata into a file programmatically:

import fs from  'fs/promises';
import shipmast from  'shipmast';

const content = await fs.readFile('./src/example.js', 'utf8');
const template = `*******************************
File: {{$file_path_relative}}
Generated On: {{$generated_on_iso}}
File UUID: {{$file_uuid}}
Generated By: {{$generated_by}}
*******************************`;

const { result, updated } = await shipmast.applyTemplate(content, template);
if (updated) {
await fs.writeFile('./src/example.js', result, 'utf8'); 
console.log('✅ Metadata applied.');
} 
else { console.log('ℹ️ No changes needed.');
} 

Applying Metadata to Multiple Files

To apply metadata across multiple files:

import shipmast from  'shipmast';
const template = `*******************************
File: {{$file_path_relative}}
Generated On: {{$generated_on_iso}}
File UUID: {{$file_uuid}}
Generated By: {{$generated_by}}
*******************************`;

await shipmast.applyTemplateGlob('./src/**/*.js',template) 

Removing Shipmast Metadata

To remove shipmast metadata from a single file:

import fs from  'fs/promises';
import shipmast from  'shipmast';

const content = await fs.readFile('./src/example.js', 'utf8');
const cleanedContent = shipmast.remove(content);
await fs.writeFile('./src/example.js', cleanedContent, 'utf8');
console.log('✅ Metadata removed.');` 

To remove shipmast metadata from multiple files:

await shipmast.removeGlob('./src/**/*.js');

Create a .shipmast Template

Customize your shipmast template. Use predefined keys or add your own. Data automatically updates while preserving custom fields.

********************************************
 shipmast

- Copyright 2000-{{$year_full}} Example Name
 
 @meta
 
 package_name: shipmast
 file_name: {{$file_path_relative}}
 purpose: {{purpose}}
   
 @system
 
 generated_on: {{$generated_on_iso}}
 file_uuid: {{$file_uuid}}
 file_size: {{$file_size_bytes}}
 file_hash: {{$file_hash}}
 mast_hash: {{$mast_hash}}
 generated_by: {{$generated_by}}
************************************* 

Template System

Shipmast supports self-healing keys and auto-generated values.

Self-Healing Keys

Any key written as key: {{KEY_NAME}} will persist across updates.

Example:

purpose: {{PURPOSE}}

Generated Values

Shipmast provides automatically generated metadata keys:

| Key | Description | |-------------------------|--------------------------| | {{$file_path_relative}} | Relative file path | | {{$file_size_bytes}} | File size in bytes | | {{$file_hash}} | SHA-256 file hash | | {{$year_full}} | Current year | | {{$mast_hash}} | Metadata block hash | | {{$generated_on_iso}} | Timestamp of update | | {{$generated_by}} | Outputs: "shipmast on npm" |

File Hashing & Version Tracking

Shipmast maintains hash values to track changes in files and metadata.

Why Use Hashes?

Shipmast stores checksum hashes to determine when updates are needed:

  • **file_hash** → Hash of the entire file

  • **mast_hash** → Hash of the metadata block

Update Behavior

Files only update if content or metadata changes.
✅ If content is unchanged, Shipmast skips updating (preventing unnecessary modifications).

Removing Shipmast Blocks

To remove shipmast metadata from a file:

shipmast --remove ./src/**/*.js
  • **--remove** → Deletes all shipmast blocks from matching files.

  • **--dryRun** → Preview changes before applying them.

Links

I provide a cli interface for shipyard here: shipmast-cli: (https://github.com/alexstevovich/shipmast-cli

Development Homepage

https://github.com/alexstevovich/wellwish-node

License

Licensed under the Apache License 2.0.