Skip to content
rlsbl.targets.npm
On this page

npm release target that manages version tracking in package.json and scaffolds CI workflows for automated publishing to the npm registry.

#rlsbl.targets.npm

#rlsbl.targets.npm

npm release target that manages version tracking in package.json and scaffolds CI workflows for automated publishing to the npm registry.

#NpmTarget

Release target for npm/Node.js projects (package.json).

#name

python
def name(self)

#read_name

python
def read_name(self, dir_path, ctx)

Read the package name from package.json.

#read_metadata

python
def read_metadata(self, dir_path)

Read license and description from package.json.

#publication_probe

python
def publication_probe(self, dir_path, version, ctx=None)

Probe npm registry for a specific version of this package.

#_detect_package_manager

python
def _detect_package_manager(self, dir_path)

Detect the package manager by walking up from dir_path to the git root.

Checks each directory for lock files in priority order:

  • pnpm-lock.yaml -> "pnpm"
  • yarn.lock -> "yarn"
  • package-lock.json -> "npm"

Stops at the git root (.git directory) or filesystem root. Returns "npm" as fallback if no lock file is found.

#read_version

python
def read_version(self, dir_path)

Read the version from package.json in the given directory.

#write_version

python
def write_version(self, dir_path, version, ctx)

Write a new version to package.json, preserving formatting.

Returns a list of relative file paths that were modified.

#version_file

python
def version_file(self, dir_path=None)

Return the version file name for npm projects.

#tag_format

python
def tag_format(self, version)

Return the git tag string for an npm release version.

#template_dir

python
def template_dir(self)

Return the path to the npm-specific template directory.

#template_vars

python
def template_vars(self, dir_path, ctx)

Extract template variables from the target project's package.json.

#template_mappings

python
def template_mappings(self, ctx)

Return CI and npmignore template mappings, selecting the CI template by package manager.

#check_project_exists

python
def check_project_exists(self, dir_path)

Return True if package.json exists in dir_path.

#get_project_init_hint

python
def get_project_init_hint(self)

Return a hint for initializing an npm project.

#dev_install_command

python
def dev_install_command(self, project_dir)

Return install specs for npm link (global) and npm install (local).

#run_tests

python
def run_tests(self, *, project_dir=None, workspace_root=None, skip_sync=False, config=None, check_timeout=None)

Run the package's npm test script.

#find_dead_modules

python
def find_dead_modules(self, root, *, exclude_dirs=None, suppress=frozenset())

Breadth-first reachability from the package's entry points.

#find_circular_dependencies

python
def find_circular_dependencies(self, root, *, exclude_dirs=None)

Detect circular imports between the package's source files.

#normalize_package_name

python
def normalize_package_name(self, raw_name)

npm folds a name by removing hyphens, underscores and dots.

#query_latest_version

python
def query_latest_version(self, name)

Ask the npm registry for the latest published version.

#claim_placeholder

python
def claim_placeholder(self, name, tmpdir)

Publish a version 0.0.0 package.json to reserve name on npm.

#yank

python
def yank(self, project_dir, version, tag, *, reason=None, dry_run=False)

Deprecate a published version on the npm registry.

npm has no delete; npm deprecate attaches a warning that every install of that exact version prints.

More tools from this site

  • claudestream Drive Claude Code from Python: run it as a subprocess and read its output as typed events, with async and sync sessions, sandbox policies, and tools you define in Python
  • claudewheel A TUI Claude Code Launcher that lets you have more than one profile, manage sessions lifecycle, pick the exact CC version, model to use (even older unlisted ones), pick which GitHub account to use, etc.
  • dirstat Fast, single-binary directory statistics CLI: every file under a tree grouped by format, with counts, sizes, and lines of code, as a colored terminal table or as JSON
  • fastware A batteries-included ASGI framework: msgspec JSON, a managed Granian server, dependency injection, SSE, WebSockets, auth, and a test client
  • go-toml-edit Zero-dep TOML editing library for Go with comment preservation
  • howmuchleft The fastest Claude Code statusline: context window, 5-hour, and weekly limit usage as three customizable gradient bars, rendering in about 6 ms
  • orxtra
  • pgdesign
  • predraw Declarative rendering pipeline: describe a scene in JSON and get SVG, PNG and WebP out, with light and dark style tokens, reusable components and text converted to path outlines
  • reposummary Turn a git repository's history into a Markdown journal: pick a time window or revision range and get a readable digest of what changed, optionally narrated by an LLM
  • safegit git wrapper CLI that gives each commit its own temporary index and retries ref updates on conflict, so concurrent agents share one repository
  • saferm Command-line replacement for rm that archives every deletion with a mandatory reason and the context it ran in, so deleted files can be listed, inspected and restored
  • selfdoc Static Site Generator that builds a project's documentation site directly from its source code, so the docs can never drift from the code they describe, with SEO/AEO, first-class blog, search, and cross-project linking built in
  • strictcli
  • stricttest An always-on test-isolation floor: a pytest plugin and a Go env-hygiene module that make a test suite structurally unable to reach real credentials, the real HOME, the network, or the development repository.
  • wesktop A Python framework that turns an ASGI web app into a desktop application, serving it from a local Granian server and displaying it in a native OS window via pywebview
Search