Code Monkey home page Code Monkey logo

painless-link's Introduction

painless-link 🤩

Motivation

The need for something like painless-link has arisen while trying to split a large project into many small submodules (for various reasons). In order to do so and to be able to continue using HMR, we linked the various submodules to our package via npm link. However we found out, that we had to manually execute npm link <SUBMODULE> every time we did an npm install in our root project.

With a rising number of submodules, the number of symlinks also increased - meaning, that we had to type npm link <SUBMODULE> dozens of times after every npm install. Therefore, we decided to create ‘painless-link’ - a configurable and fully automatic symlink solution utilizing npm link. 🤩

Installation

Global

npm install -g painless-link

...or as a package dependency

npm install --save-dev painless-link

Usage

  1. Add every dependency which should be resolved as following to your package.json:
{
  "linkedDepedancies": {
    "dependencyA": "../modules/dependencyA"
  }
}
  1. Add painless-link to your scripts
{
  "scripts": {
    "postinstall": "painless-link link"
  }
}

Every linked dependency should contain a package.json

Contribution

Any contribution is highly appreciated - just open a PR containing your changes and we will have a look at it ASAP!

Want to contribute, but don't know what to do? Don't worry, we got you! Have a look at the roadmap to find out what's missing. Thanks in advance! 🤩

Roadmap

Every project can be improved - this also applies to this package 🤓 here is what we have in mind regarding the future of this package:

  • make it easier 😋
  • better error handling
  • own symlink system to avoid collisions with any external usage of nmp link (and to avoid permission problems caused by npm link due to it linking everything into a global/systemwide folder)
  • configuration file
  • add tests
  • build an advanced CLI for more options e.g. a verbose mode
  • environment specific linking like only linking in NODE_ENV=development

painless-link's People

Contributors

christianbirg avatar marcesengel avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.