Skip to content
This repository has been archived by the owner on Oct 21, 2022. It is now read-only.
/ startcraft Public archive

Nodejs helper for crafting modules without publishing

License

Notifications You must be signed in to change notification settings

Xcraft-Inc/startcraft

Repository files navigation

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?
  • 🚧 You have a development package containing future nodejs modules or git submodules?
  • 🐐 npm link doesn't do the job?
  • 🎬 You have some scripts to start in your modules?

startcraft can help you 👊

What startcraft do for you?

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

Okay...

Example

You develop the next killer space invader mmo-shooter 👾, but you need to hack in your 🔥 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.

About

Nodejs helper for crafting modules without publishing

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published