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 🙏

© 2024 – Pkg Stats / Ryan Hefner

startcraft

v2.2.0

Published

Helper for crafting modules without publishing

Downloads

87

Readme

StartCraft

"Jacked up and good to go."

npm install --save-dev startcraft

Use case

  • :goberserk: You hate publishing your modules each time you need to use it?
  • :construction: You have a development package containing future nodejs modules or git submodules?
  • :goat: npm link doesn't do the job?
  • :clapper: You have some scripts to start in your modules?

startcraft can help you :punch:

What startcraft do for you?

  • :wrench: symlink your development modules in the root node_modules/.
  • :octopus: npm install your development modules depencencies in the root node_modules/.
  • :racehorse: run special "startcraft": "echo hello" scripts entry of your development modules.
  • :cake: can run pre/post startcraft scripts for you.
  • :mailbox_with_mail: deploy properly your tree for --production builds (support electron-builder).

Okay...

Example

You develop the next killer space invader mmo-shooter :space_invader:, but you need to hack in your :fire: toolbox modules for adding new features.

You have a non-trivial development process where you need to launch some scripts with the front-end (webpack etc.)...

You friend :neckbeard: wants to contribute! How to bootstrap the craft?

  • Prepare a dev module (with repository) called: invaders-dev.
  • Add git submodules for your own toolbox, framework, front-end...
  • Install startcraft as dev-dep.
  • Hack in the .scrc file and add your own modules in the list.
  • Add startcraft in postinstall and postshrinkwrap scripts of your invaders-dev package.json.
  • Give the invaders-dev repo url to your friend, and he can just npm install in it!

How to use and configure

Add startcraft post install and post shrinkwrap entries to your package.json:

"scripts": {
  "postinstall": "startcraft",
  "postshrinkwrap": "startcraft"
},

Touch a json file named .scrc in your root package directory:

{
  "npmInstallArgs": [],
  "modules": ["./lib/my-first-module", "./lib/my-second-module"],
  "exclude": [],
  "substitutions": {
    "the-module-prebuilt": "the-module"
  },
  "scripts": {
    "presc": {
      "postinstall": [
        "git submodule update --init --recursive",
        "git submodule foreach --recursive git checkout master",
        "git submodule foreach --recursive git pull"
      ]
    },
    "postsc": {}
  }
}

npmInstallArgs can be used to add custom args when startcraft performs npm install.

modules entries is relative paths to your modules from the dev root package.

exclude is an array of node modules to not install directly when extracting the list of dependencies fo each "modules".

substitutions is a map where it's possible to specify the substitution of a module by an other one. For example, after a full install, you want to replace a prebuilt module by the original module. It's possible here, and then the substitution will remove the prebuilt module and create a symbolic link from the original module as target to the prebuilt module name as destination.

scripts entries is hooked on the npm lifecycle. You can tell if they run in pre (presc) or post (postrc) startcraft run.

For production build

Just use NODE_ENV=production npm install, then the package.json file will be updated accordingly to the real dependencies in the node_modules directory. The modules provided by the .scrc files are no longer symlinks in this case but a full copy.