Skip to content

Latest commit

 

History

History
1651 lines (1380 loc) · 59.7 KB

CONFDOCS.md

File metadata and controls

1651 lines (1380 loc) · 59.7 KB

Codebase Configuration Documentation

Documents configuration tasks managed by robo-config.

Manage various configuration files for an open source npm package on github.

Targets Requires Variables
    project
    ├─ .babelrc
    ├─ .circleci
    │  └─ config.yml
    ├─ .dependabot
    │  └─ config.yml
    ├─ .editorconfig
    ├─ .eslintrc.json
    ├─ .gally.json
    ├─ .gitignore
    ├─ .idea
    │  └─ ${projectName}.iml
    ├─ .npmignore
    ├─ .releaserc.json
    ├─ LICENSE
    ├─ package.json
    ├─ README.md
    ├─ src
    │  └─ index.js
    └─ test
       ├─ index.spec.js
       └─ mocha.opts

Manage basic project structure for npm open source package on github.

Targets Requires Variables
    project
    ├─ .babelrc
    ├─ .eslintrc.json
    ├─ README.md
    ├─ src
    │  └─ index.js
    └─ test
       ├─ index.spec.js
       └─ mocha.opts

Updating README.md using create-only.

  • Create README.md template file.
Targets Variables
    project
    └─ README.md

Updating test/mocha.opts using create-only.

  • Create options file for mocha tests.
Targets Requires
    project
    └─ test
       └─ mocha.opts

Updating test/index.spec.js using create-only.

  • Create package template index.spec.js test file.
Targets Requires
    project
    └─ test
       └─ index.spec.js

Updating src/index.js using create-only.

  • Create package template index.js file.
Targets Requires
    project
    └─ src
       └─ index.js

Updating .eslintrc.json using overwrite.

  • Create configuration file for eslint enforcing opinionated, best practices.
Targets Requires
    project
    └─ .eslintrc.json

Updating .babelrc using merge-deep.

  • Create configuration file for babel.
Targets Requires
    project
    └─ .babelrc

Manage semantic-release configuration for npm open source package on github.

Targets Requires
    project
    └─ .releaserc.json

Updating .releaserc.json using overwrite.

Targets Requires
    project
    └─ .releaserc.json

Manage package.json for npm open source package on github.

Targets Requires Variables
    project
    └─ package.json

Updating package.json using merge-shallow.

  • Set various entries.
Targets Requires
    project
    └─ package.json

Updating package.json using merge-deep.

  • Set various entries.
Targets Requires Variables
    project
    └─ package.json

Updating package.json using default-shallow.

  • Set defaults for various entries.
Targets Requires
    project
    └─ package.json

Updating package.json using default-deep.

  • Set defaults for various entries.
Targets Requires
    project
    └─ package.json

Manage npm configuration for npm open source package on github.

Targets Requires
    project
    └─ .npmignore

Updating .npmignore using unique-top.

  • Inject comment into .npmignore explaining when to use it.
Targets Requires
    project
    └─ .npmignore

Manage license configuration for npm open source package on github.

Targets Requires Variables
    project
    ├─ LICENSE
    └─ package.json

Manage license configuration for npm open source package on github.

Targets Requires Variables
    project
    ├─ LICENSE
    └─ package.json

Updating package.json using merge-shallow.

  • Link MIT license file into npm configuration.
Targets Requires Variables
    project
    └─ package.json

Updating LICENSE using overwrite.

Targets Variables
    project
    └─ LICENSE

Manage WebStorm configuration for npm open source package on github.

Targets Requires Variables
    project
    └─ .idea
       └─ ${projectName}.iml

Updating .idea/${projectName}.iml (if exists) using xml-merge.

  • Mark coverage Folder as excluded in Jetbrains.
Targets Requires Variables
    project
    └─ .idea
       └─ ${projectName}.iml

Manage gitignore configuration for npm open source package on github.

Targets Requires
    project
    └─ .gitignore

Updating .gitignore using unique-top.

  • Inject recommended entries into gitignore file.
  • Default ignores for JetBrains IDE.
  • Default ignores for OSX
  • Default ignores for NodeJs
Targets Requires
    project
    └─ .gitignore

Manage gally configuration for npm open source package on github.

Targets Requires Variables
    project
    └─ .gally.json

Updating .gally.json using overwrite.

  • Restrictive two-branch gally config.
Targets Requires Variables
    project
    └─ .gally.json

Manage editor configuration for npm open source package on github.

Targets
    project
    └─ .editorconfig

Updating .editorconfig using overwrite.

  • Two space line indentation.
  • Set lf line endings.
  • Set utf8 encoding.
  • Remove unnecessary whitespaces.
Targets
    project
    └─ .editorconfig

Manage dependabot configuration for npm open source package on github.

Targets Requires
    project
    └─ .dependabot
       └─ config.yml

Updating .dependabot/config.yml using overwrite.

  • Configure dependabot to instantly merge javascript dependency updates into the dev branch.
Targets Requires
    project
    └─ .dependabot
       └─ config.yml

Manage circleci configuration for npm open source package on github.

Targets Requires
    project
    └─ .circleci
       └─ config.yml

Updating .circleci/config.yml using overwrite.

  • Restrictive two-branch gally config.
Targets Requires
    project
    └─ .circleci
       └─ config.yml

Add badged for npm open source package on github.

Targets Requires Variables
    project
    └─ README.md

Updating README.md using merge-below-title.

Targets Requires
    project
    └─ README.md

Updating README.md using merge-below-title.

Targets Requires Variables
    project
    └─ README.md

Updating README.md using merge-below-title.

Targets Requires Variables
    project
    └─ README.md

Updating README.md using merge-below-title.

Targets Requires
    project
    └─ README.md

Updating README.md using merge-below-title.

Targets Requires Variables
    project
    └─ README.md

Updating README.md using merge-below-title.

Targets Requires Variables
    project
    └─ README.md

Updating README.md using merge-below-title.

Targets Requires Variables
    project
    └─ README.md

Updating README.md using merge-below-title.

Targets Requires Variables
    project
    └─ README.md

Requires

Programming Language.

JavaScript, often abbreviated as JS, is a high-level, interpreted programming language that conforms to the ECMAScript specification. It is characterized as dynamic, weakly typed, prototype-based and multi-paradigm.

JavaScript test framework.

Mocha is a JavaScript test framework for Node.js programs, featuring browser support, asynchronous testing, test coverage reports, and use of any assertion library.

JavaScript assertion library.

Chai is a BDD / TDD assertion library for node and the browser that can be paired with any javascript testing framework.

Linting for JavaScript.

JSLint is a static code analysis tool used in software development for checking if JavaScript source code complies with coding rules.

JavaScript Compiler.

Babel is a toolchain that is mainly used to convert ECMAScript 2015+ code into a backwards compatible version of JavaScript in current and older browsers or environments.

Automates npm package release workflow.

Automates the package release workflow including:

  • determining the next version number
  • generating the release notes
  • publishing the package

Javascript package repository.

Requires the project to be conform with the npm standard, i.e. contain a package.json file. Does not require the project to be published to npm.

Collection of various IDEs.

Collection of various IDEs. There exists one for every major programming language and they are all very similar (i.e. shortcuts, layout), which makes them great when switching languages.

Coverage testing for javascript projects.

A major coverage testing framework for javascript. Comes with all the bells and whistles.

Version control system.

The most used version control system. Not to be confused with github (which uses git).

Run automated jobs using docker containers.

Allows set up for ci/cd using docker containers. Automates development process quickly, safely, and at scale.

Automation around github.com Repository Management

Allows management of github.com repositories through configuration. Very powerful when you need to synchronize settings across multiple repositories.

Major development platform powered by git.

GitHub is a code hosting platform for collaboration and version control. Lets you and others work together on projects.

Automatic dependency updates.

Makes dependency updates very easy by automatically creating pull requests in your repo. All major programming languages are supported or work is done towards supporting them.

Dependency management similar to npm.

Very similar functionality to npm cli.

Showcase and analyze coverage reports.

Enables displaying of a status badge indicated code coverage percent of the project. Furthermore allows anyone to easily drill down into missing coverage or coverage changes.

Javascript package repository published.

Requires the project to be published to npm either as a private or public package.

NodeJs Project Management.

Enforces and helps setting up best practices around NodeJs projects. Enforces highest code quality and minimizes package setup and maintenance complexity - so you can focus on writing code. Highly recommended if you are getting started with a new package and extremely useful if you are maintaining multiple packages.

Dependency badge for javascript github repositories.

Enables displaying of a status badge indicated whether the dependencies are outdated.


Variables

packageName : string

Name of the package on npm.

The name of the project as published to npm. Note that for scoped packages the name can differ significantly from the repo name.

repoKey : string

Repository key.

The repository key contains the owner or organization of the project and the repository name itself, separated by a slash.

ownerName : string

Name of the owner of this project.

The owner name of the project is the name of the person or organization publishing the project under their license.

projectName : string

Name of the project.

The project name is in most cases identical to the repository name.

owner : string

The owner of the code on github.

The code owner is the gatekeeper of the project, ultimately responsible for all changes.

mergeBot : string

The github name of the bot used for automatic merging.


Strategies

🔹 any

Does nothing when the file is already present, otherwise creates it.

🔹 any

Simply replace the old with the new content.

🔹 json, yml

Does a "smart" deep merge.

This will not work as desired for all object deep merging, but should for many cases.

🔹 json, yml

Does a shallow merge aka Object.assign().

Useful when specific keys of the target need to be overwritten.

🔹 json, yml

Similar to merge-shallow, but keeps existing values instead of overwriting.

Useful to ensure specific keys of the target are present without overwriting existing content.

🔹 json, yml

Similar to merge-deep, but keeps existing values instead of overwriting.

Useful to ensure specific keys of the target are present without overwriting existing content.

🔹 list

Merges content at the top of the file and removes existing, duplicate lines.

Useful for managing e.g. .gitignore when the original content should be kept.

🔹 xml

Does a "smart" deep merge.

This will not work as desired for all xml merging, but should for many cases.

🔹 list, nostruct

Merges content below title.