@telus/build-essential v2.0.0
Build Essential
contains a list of packages which are considered essential for building packages in ci platform
Why
Our Reference Architecture introduces a set of standards around linting, code quality, testing are more ...
Those standards are upheld using a variety of tools, however, projects need to add these individual tools as dependencies, which introduces a number of challanges:
CI Environment
CI tests have to run npm install on every project, and the bigger the dependency list, the longer those runs take.
As part of moving to separate CI & CD processes, we have the opportunity to pre-load some of the most common project dependencies into a Docker container
Local Development
For developers working across multipl projects, having to install the same dependencies over and over for every project adds a layer of inconsistency that can be resolved with global dependencies
What
npm package: released as an open source package under
@telusscope in npm, thepackage.jsonfile contains a number of pre-selected common dependencies, (mainly used for linting)Note: the dependencies are marked as
peerDependenciesto enable some limitations aroundeslintand others in global usage. For example, wheneslintis installed globally it looks for packages in the global scope, not the local one.Docker Container: a
Dockerfileuses the package above as basis for creating a container used in CI jobs
Packages
- Configuration:
@telus/eslint-config- Shared ESLint Config@telus/remark-config- Shared Remark Config@telus/semantic-release-config- Shared Semantic Release Config
Tools:
editorconfig-checker- EditorConfig validatoreslint- ESLint Validatorbabel-eslint- Babel-ESLint for if you are using types (Flow) or experimental features not supported in ESLint itself yetremark-cli- Remark is a markdown validatorsemantic-releaseSemantic Release is a fully automated version management and package publishing toolupdated- Updated ensures you have the latest dependencies
Utilities:
How
Install Locally
npm install --global @telus/build-essentialNote: the
postinstallstep will attempt to install more packages globally, a good way to make this work if you are having permission issues is to set your NPM prefix to somewhere in your homedir (e.g.~/.npm) in your config (~/.npmrcwithprefix=<dir>) and to add thebin/directory to yourPATHenvironment variable. For an example, consider line 15 of theDockerfile. If you really know what you're doing, but it's not recommended, you could run withsudodepending on your localnpmsetup
Use in your CI
Use the Docker Container to run your lint steps as per the example provided in this project's circle.yml
Github: @telus • Twitter: @telusdigital
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago