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

@dynamods/dynamo-pm-wizard

v0.0.29

Published

Dynamo Package Manager Publish Wizard

Readme

Package Publish Wizard

Build Status

NPM Version NPM Last Update

Overview

The Package Publish Wizard is a React-based UI component designed to facilitate the creation and management of packages in Dynamo. It is hosted inside the Dynamo Package Manager and provides an intuitive interface for users to create, update, and publish packages.

A package in Dynamo is a structured collection of files and folders that extends Dynamo's capabilities. The wizard enables users to create a package from scratch or update an existing package. Packages can be stored locally or published online. Once a package is published, only the original creator can update it, ensuring controlled versioning.

Features

  • Create a new package: Initialize a package with metadata, dependencies, and contents.
  • Update an existing package: Modify and increment the version of an already published package.
  • Local package management: Save and manage packages directly on disk.
  • Online publishing: Upload and maintain packages via the Dynamo Package Manager.
  • Version control: Ensure package integrity with incremental versioning.

Installation

Ensure you have Node.js and npm installed before proceeding.

npm install

Running the Project

To start the development server:

npm start

This runs the project using Vite.

To build the project:

npm run build

This compiles the application and processes it for production use. bundle.js and index.html will be exported in the dist folder. Only use the index.html for Dynamo.

To clean the build directory:

npm run clean

Dynamo Integration

The react component is hosted inside Dynamo in a WebView2 wpf component. Due to a known limitation of 2Mb, we serve a single file injecting the resulting bundle.js inside the index.html file.

  • use 'inline-bundle.js' to inject the bundle.js into the index.html. The resulting file also contains the embeddesFonts location - make sure this is well coordinated with the location on Dynamo's side

Running Tests

The project includes both unit and end-to-end tests.

To run unit tests:

npm run test:unit

To run all tests:

npm run test

Linting - ignore

To check for linting errors:

npm run lint:check

To automatically fix linting issues:

npm run lint:fix

License Compliance

This project uses Autodesk's adsk-npm-license-puller to manage dependencies. To generate direct and transitive dependency reports:

npm run license

Versioning

To increment the package version (patch release):

npm run version:patch

Deployment - Release Process

The Package Publish Wizard is consumed by Dynamo as the public npm package @dynamods/dynamo-pm-wizard.

The internal CI can't reach npmjs.org, and the wizard's dependencies are internal, so it can't be built on public GitHub. A release is therefore built here and published from the public, publish-only repository DynamoDS/PackagePublishWizard:

  1. The release build packs the wizard (npm pack) with the new version.
  2. It creates the GitHub release v<version> on DynamoDS/PackagePublishWizard and attaches the tarball.
  3. That repository's Publish release workflow checks the tarball and publishes it to npmjs.org.

Publish repository settings

The publish workflow is controlled by two settings on DynamoDS/PackagePublishWizard, under Settings → Secrets and variables → Actions. Neither is stored in a repository file, so changing one doesn't go through a PR. Note who changed it and why in the release's Jira issue.

| Setting | Kind | Production value | What it does | | --- | --- | --- | --- | | PUBLISH_DRY_RUN | Repository variable | false | true makes the workflow run npm publish --dry-run and send no token, so nothing is published. Only the exact value true does this: any other value, or no variable at all, publishes for real. Use it to test a workflow change (see Testing the publish workflow). | | NPM_TOKEN | DynamoDS organization secret | a valid npm token | The npm token used to publish. It needs write access to @dynamods/dynamo-pm-wizard. A repository secret with the same name would override the organization one. |

To check or change the variable (needs write access to the repository):

gh variable list --repo DynamoDS/PackagePublishWizard
gh variable set PUBLISH_DRY_RUN --body false --repo DynamoDS/PackagePublishWizard

gh variable list shows when the variable was last changed. A secret's value can't be read back; only an organization admin can see when NPM_TOKEN was last updated.

Before you start: check the previous release was closed out

Each item below is a step from the previous release's close-out (see After the release). If one was skipped, do it now, before cutting the branch:

  • No open version PR. There is no open PR titled "Release version to ''" on this repository. If one is open, review and merge it first.
  • Master holds the latest published version. The version in pipeline.yml on master equals npm view @dynamods/dynamo-pm-wizard version. If master is behind, the release rebuilds a version that's already published, and the publish fails.
  • The release branch name is free. Patch releases reuse the same name (e.g. release/0.0.x-patch), and the branch is normally deleted when the version PR merges. If it still exists, delete it.
  • The publish repo is ready. On DynamoDS/PackagePublishWizard:
    • PUBLISH_DRY_RUN is false (gh variable list --repo DynamoDS/PackagePublishWizard).
    • No workflow change, such as a Dependabot bump, has merged without a dry run (see Testing the publish workflow).
  • The npm token is still valid. npm tokens last 90 days at most. If the NPM_TOKEN secret is near its expiry, ask its owner to replace it first. When a token can't publish, npm returns E404 (not E401) for this scoped package.

Releasing

  • Make sure that the latest changes are reviewed and merged to the master branch.
  • Create a new release branch based on the master branch. The new release branch needs to be named using the following convention:
    • Start the branch name with release/
    • If it is a major release, follow it by the major numeric version and the keyword -major. Example: release/2-major
    • If it is a minor release, follow it by the major versions and a variable minor version denoted by x followed by the keyword -minor. Example: release/2.x-minor
    • If it is a patch release, follow it by the major, minor numeric versions and a variable patch version denoted by x followed by the keyword -patch. Example: release/2.1.x-patch
  • In CloudBees CI, select the branch and click Build Now. A build started by the branch push stops itself; the release build has to be started by hand.

(Note: The version of the package depends upon the version specified in the pipeline.yml file, the version in the branch name is purely for record-keeping. pipeline.yml must hold the latest published version, because the build adds one to it.)

If the build fails after the version was bumped but before the GitHub release was created, don't build again. Download dynamo-pm-wizard.tgz from the build's artifacts and create the release by hand:

gh release create v<version> dynamo-pm-wizard.tgz --repo DynamoDS/PackagePublishWizard --target master

If the Publish release workflow fails (for example, an expired token), fix the cause and re-run it with gh workflow run npm-publish.yml --repo DynamoDS/PackagePublishWizard -f tag=v<version>. Don't rebuild the release branch.

After the release: close it out the same day

None of these steps blocks the release itself, but the next release depends on them. Do them right away rather than leaving them for whoever releases next:

  1. Verify the publish. The Publish release workflow succeeded, and the version is on npmjs.org and on the internal mirror Dynamo builds from. The mirror can take about 30 minutes:
    npm view @dynamods/dynamo-pm-wizard@<version> version --prefer-online --registry https://npm.autodesk.com/artifactory/api/npm/autodesk-npm-virtual/
  2. Merge the version PR. The build service user opens "Release version to ''" from the release branch to master. Review and merge it so that master holds the released version. Merging deletes the release branch; check that it did.
  3. Update Dynamo. Once the mirror shows the new version, open a Dynamo PR that bumps PackageVersion for NpmRunBuildPMWizard in src/DynamoCoreWpf/DynamoCoreWpf.csproj. Never bump it before the version is published: Dynamo's build fails if it can't download the package.
  4. Triage the publish repo's PRs. Review open Dependabot PRs on DynamoDS/PackagePublishWizard. Dry-run any that change the workflow (see below) before the next release depends on them.
  5. Leave the switches in their production state. If PUBLISH_DRY_RUN was changed for testing, set it back to false.
  6. Update the Jira issues the release ships. For each issue fixed in this version, add a comment naming the version and the Dynamo PR that consumes it, then move the issue to Testing. These issues are usually on the Archilizer sprint board, not the Eidos kanban board.

Testing the publish workflow

To try a workflow change without publishing, set PUBLISH_DRY_RUN to true, re-run the workflow against an existing release, then set it back:

gh variable set PUBLISH_DRY_RUN --body true --repo DynamoDS/PackagePublishWizard
gh workflow run npm-publish.yml --repo DynamoDS/PackagePublishWizard -f tag=v<latest version>
gh variable set PUBLISH_DRY_RUN --body false --repo DynamoDS/PackagePublishWizard

A dry run never sends the token, so it can't tell you whether the token still works.

Release types

It is mandatory to include at-least one of the release types in the branch name.

  • Use patch for a new patch release (backwards-compatible bug fixes, security patches).
  • Use minor for a new minor release (add functionality in a backwards-compatible manner).
  • Use major for a new major release (incompatible API changes/breaking changes).

Examples: | Branch Name | Current Version | New Version | | --------------------- | ------------- | ------------- | | release/4.6.x-patch | 4.6.1 | 4.6.2 | | release/4.x-minor | 4.6.2 | 4.7.0 | | release/5-major | 4.7.0 | 5.0.0 |

Learn more about semantic versioning

Package Publish Wizard - Usage

The package is public and can be installed using npm:

npm install @dynamods/dynamo-pm-wizard@latest

In the above command latest can be replaced by a specific version to fetch it.

Dependencies

Core Dependencies

  • React 18.3.1 - Core library for building UI components
  • React Hook Form - Form validation and management
  • Sass - Stylesheet preprocessor for styling
  • Weave MUI Components - UI components for a consistent design system
  • React-Intl - Internationalization support

Weave MUI Library

Weave MUI is an internal Autodesk library, thus we need to make sure to include an .npmrc file with the following content:

@adsk:registry=https://npm.autodesk.com/artifactory/api/npm/autodesk-npm/
registry=https://npm.autodesk.com/artifactory/api/npm/autodesk-npm-virtual/

Can only be used when under Autodesk environment (Autodesk computer or VPN).

Development Dependencies

  • Vite - Build and development server
  • Jest - Testing framework
  • ESLint - Linter for maintaining code quality
  • TypeScript - Strongly-typed JavaScript

Contribution

To contribute to the project:

  1. Clone the repository.
  2. Install dependencies: npm install
  3. Create a new feature branch.
  4. Submit a pull request after implementing changes.

Author

Developed by Autodesk Inc.

License

This project is licensed under the ISC License.