Have ideas to improve npm?Join in the discussion! »

    @egis/semantic-dependents-updates-github

    1.1.0 • Public • Published

    semantic-dependents-updates-github

    Creates Github Pull Requests to update current package' version in dependent projects.

    NPM info

    Circle CI Dependency Status devDependency Status semantic-release

    Overview

    This package can be useful for a family of inter-dependent NPM packages. The basic idea is this: when A package' version is updated let's send a pull request to package B, changing A's dependency in its package.json to new version and initiating CI test of B with new version of A.

    This is similar to the way Greenkeeper works, but it's a bit different:

    • it's just a Node.js module, not an external service
    • it works fine with private NPM packages (Greenkeeper currently doesn't support them, that's why I needed to create it)
    • it's focused on single dependency package with a list of dependents, similarly to dont-break's approach

    This module plays perfectly with semantic-release, see below for usage instructions.

    Here's an example output from this module at CircleCI: Example screenshot

    Limitations

    In case B depends on A this module creates a Git branch inside B's repository, so this only works if your Github user have write access to B's repository. So basically this is a solution only for a case when you (or your organisation) own the whole family of dependencies, which was exactly the case which this module was made to solve - it was made for a company's own suite of private NPM modules.

    Installation

    Install the package:

    npm install -g @egis/semantic-dependents-updates-github
    

    Usage

    • Create a GitHub token to be used by semantic-dependents-updates-github and put it to GH_TOKEN env variable. You can also take (any of) GH_TOKEN created by https://github.com/semantic-release/semantic-release setup: it will print it if you choose 'Other' CI instead of Travis.

    • Define the dependent projects to be updated in package.json, e.g.:

      ...
      "name": "build-tools",
      "version": "1.2.3",
      "semantic-dependents-updates": {
        "dependents": {
          "@egis/egis-ui": "git@github.com:egis/EgisUI.git",
          "@egis/esign": "git@github.com:egis/eSign.git",
          "@egis/portal-app": "git@github.com:egis/Portal.git"
        }
      },
      ...
    

    Here we tell semantic-dependents-updates-github to create pull requests to change build-tools' version to "1.2.3" in GitHub repos of "@egis/egis-ui", "@egis/esign" and "@egis/portal-app" packages.

    • Use the 'semantic-dependents-updates-github' binary script in package.json' scripts section - this will create the PRs. Example for integration with semantic-release:
    yarn semantic-release && yarn semantic-dependents-updates-github
    

    The PR generation can be switched off - then only branch will be created and relevant commit will be pushed:

    PR=false yarn semantic-dependents-updates-github
    

    Configuration

    The module config section in package.json can have following options, all of which are optional except "dependents". Example:

      ...
      "semantic-dependents-updates": {
        "dependents": {
          "@egis/egis-ui": "git@github.com:egis/EgisUI.git",
          "@egis/esign": "git@github.com:egis/eSign.git",
          "@egis/portal-app": "git@github.com:egis/Portal.git"
        },
        "branchNameBase": "autoupdate-build-tools",
        "branch": "my-branch",
        "author": {
          name: "semantic-dependents-updates-github bot",
          email: "semadep@nowhere.io"
        },
        "pullRequests": false
      },
      ...
    
    • "dependents" list NPM package names and Github URLs of dependent packages
    • "branch" is the target branch of dependent packages where pull request will be submitted to ("master" by default)
    • "author" can be used to specify "author" info for the commit created by module, by default it's { name: "semantic-dependents-updates-github bot", email: "semadep@nowhere.io" }
    • "branchNameBase" is a prefix of branch being created for pull request. Full branch name in this case will be like this: "autoupdate-build-tools-1.0.2-1459471368624". Default is "autoupdate".

    License

    MIT License 2019 © Artem Vasiliev

    Install

    npm i @egis/semantic-dependents-updates-github

    DownloadsWeekly Downloads

    179

    Version

    1.1.0

    License

    MIT

    Unpacked Size

    14.3 kB

    Total Files

    6

    Last publish

    Collaborators

    • avatar