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

dist-drop

v1.0.1

Published

CLI tool to automate frontend builds and copy to your WAR server

Readme

dist-drop

CLI tool to automate frontend builds and copy to your WAR server (Wildfly, Weblogic, Tomcat).

Problem

When developing frontend apps (Vue, React, Angular, etc.) embedded inside legacy Java WARs, every small change requires:

  1. npm run build in the frontend project
  2. Manually copy dist/ or build/ to the correct folder inside the WAR
  3. Check if it works in the legacy app

This is repetitive and error-prone — folder names don't always match, build output folders vary by framework, and developers waste 3-5 minutes per cycle.

Solution

A one-time interactive setup (dist-drop init) auto-detects your frontend project, then dist-drop sync or dist-drop watch handles the rest.

Installation

npm install -g dist-drop

After installing, the dist-drop command is available globally.

Commands

dist-drop init — Interactive Setup

Set up your frontend project and WAR target path:

dist-drop init

First time: Asks for your frontend app path and WAR target path, auto-detects framework, saves config.

Already configured: Shows options to add, edit, or remove projects.

Auto-detection supports:

| Framework | Detection | Build Output | |-----------|-----------|-------------| | Vue 2/3 | vue.config.js or @vue/cli-service | dist/ | | React (CRA) | react-scripts | build/ | | React (Vite) | @vitejs/plugin-react | dist/ | | Angular | angular.json | dist/<project>/ | | Next.js | next in package.json | out/ | | Generic | Fallback | dist/ |

dist-drop sync [project] — Build + Drop

# Sync a specific project
dist-drop sync ui_b2b

# Sync all configured projects
dist-drop sync --all

Three sync modes:

  • Full Build + Dropnpm run build then copy all files
  • Drop Only — skip build, copy existing build output
  • Incremental Drop — copy only files changed since last sync

dist-drop watch <project> — Auto Sync on Save

dist-drop watch ui_b2b

Watches src/ and public/ for changes. On save: debounce 500ms, build, copy. Press Ctrl+C to stop.

dist-drop list — Show Configured Projects

dist-drop list

Lists all configured projects with framework, source, target, and build status.

Config File

.distdroprc.json is created in your working directory after running dist-drop init:

{
  "version": 1,
  "warBase": "/path/to/wildfly/standalone/deployments/app.war",
  "projects": {
    "ui_b2b": {
      "source": "/path/to/your/frontend/ui_b2b",
      "framework": "vue2",
      "buildCmd": "npm run build",
      "buildOutput": "dist",
      "target": "/path/to/wildfly/standalone/deployments/app.war/Framewrk/B2B"
    }
  }
}

See .distdroprc.example.json for a template.

Target Detection

During setup, dist-drop checks the WAR target folder:

  • Has dist/ inside → copies build output into target/dist/
  • Has index.html or css/ + js/ → copies directly into target
  • Empty folder → copies directly (first deploy)

License

MIT

Author

Akshay Achuthan