npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ngx-code-guard

v1.0.0-beta17

Published

The most comprehensive code quality control schematic for Angular projects. Sets up the best linters, code checkers, code formatter and testing tools. Provides unified config for IDEs and enforces coding conventions and more!

Downloads

6

Readme

NGX Code Guard

Table of Contents

This is an Angular schematic which aims to improve code quality by installing and configuring several useful code checkers, validators and and other automated dev tools.

The goal of this project is to put all the best code quality control tools into one package, providing a way to seamlessly integrate these into any Angular app.

The package has been tested with Angular 7, 8 and 9.

Please note that this package is currently in BETA.

Features

By default, the package does the following. The defaults are printed in bold.

Static code analysis / linting:

  • Installs the TypeScript linter of your choice (TsLint or EsLint).
  • Installs JSONLint to validate JSON files
  • Installs StyleLint to validate style files (SCSS, CSS, SASS or LESS - auto detects format).
  • Installs CommitLint to enforce commit message conventions (Angular conventional commit format).
  • Can install Markdownlint for Markdown validation (CommonMark or GFMD).
  • Can add Pa11y autmated A11Y (WCAG 2.x or Section 508) checker and Codelyzer A11Y rules.
  • Configures all linters using strict and "best practice" linting rules.
  • Creates Git pre-commit hooks for all linters (TS, JS, CSS / SCSS, JSON, MD)
  • Optimizes TypeScript compile time checks by enabling all strict compiler options.

Useful dev tools:

  • Installs and configures Prettier code formatter.
  • Automatically formats all staged files using Prettier.
  • Installs and configures Webpack Bundle Analyzer.
  • Installs and configures Compodoc documentation builder.
  • Can install Snyk (free version) for advanced security vulnerability checks.
  • Can install and configure Cypress for E2E testing, replacing Protractor. This comes with:
    • TypeScript support, so you can write tests in TS instead of JS,
    • Istanbul test coverage reports (HTML, text and other formats)
    • Automatic network caching
    • A11Y plugins for accessibility E2E testing.
  • Can install and configure Istanbul test coverage reporter.
  • Installs all dependencies using the package manager of your choice.
  • Generates NPM / Yarn scripts for all tools.

Installation

New Projects

You may generate a new Angular project with all the above extras by running:

npm i ngx-code-guard
ng new -c ngx-code-guard --name projectName [options]

... where "options" means any option you would normally pass to "ng new".

Existing projects

To add this tool to an existing project, simply do the following:

ng add ngx-code-guard
ng g ngx-code-guard:codeguard

Alternatively, you may also install the package using NPM / Yarn:

npm i ngx-code-guard --save-dev

Upgrading

Currently, this is only possible via NPM / Yarn:

npm up ngx-code-guard

Usage

You may customize the behavior of this tool via various command line options. Almost all of these have meaningful default values, therefore usually you don't need to specify any of them. Run the command below for a list of available options.

ng g ngx-code-guard:guard --help

or

ng new -c ngx-code-guard --help

Once the package is installed, the following useful NPM scripts will be also available (assuming that you've enabled Cypress and A11Y checks too). Just execute "npm run CMD" or "yarn CMD":

| Command | Description | | ---------------------------------- | -------------------------------------------------------------------------------------------- | | guard:analyze ./path/to/stats.json | Starts webpack bundle analyzer. Requires stats JSON data! | | guard:audit | Checks your prod dependencies for security vulnerabilities, prints human readable output | | guard:audit:ci | Checks your prod dependencies for security vulnerabilities, prints JSON output, ideal for CI | | guard:audit:dev | Checks all your dependencies for security vulnerabilities, prints JSON output. | | guard:lint | Runs all linters and checks your source code. | | guard:a11y | Runs automated accessibility (WCAG 2.x / Section 508) checks | | guard:docs:build | Builds project docs using Compodoc | | guard:docs:show | Opens docs generated by Compodoc using the default browser | | guard:test:headless | Runs Cypress tests in headless chrome and prints results to console | | guard:test:all | Runs Cypress tests in Chrome (executes all test suites) | | guard:test:manual | Starts up the Cypress test runner app, allowing you to run test the suite of your choice | | guard:report:text | Generates E2E test coverage reports in text format and prints it to console | | guard:report:html | Generates E2E test coverage reports in HTML format and loads it using the default browser | | guard:report:summary | Generates short E2E test coverage summary report in text format and prints it to console |

  • analyze requires a stats JSON data file to exist. You can generate that using ng build --prod --stats-json.
  • guard:test:report requires the tests to be executed with code coverage enabled. See next section!
  • guard:test and guard:report are only available if you've enabled Cypress.
  • Using Snyk requires a free account, which you can register [here[(https://snyk.io)

Test coverage reports

You may run any of the guard:test:headless, guard:test:manual or guard:test:all commands with the -e coverage=true flag. This will generate test coverage report which you can view in different formats. For example, to create and view the HTML report, run the following:

npm run guard:test:all -- -e coverage=true && npm run guard:report:html

or

yarn guard:test:all -e coverage=true && yarn guard:report:html

It is also possible to generate reports in various formats.

npx nyc report --reporter=REPORTER_NAME

For a list of available reporters, please see this page.

Security vulnerability checks

The guard:audit command performs Yarn / NPM audit for you. The other audit commands do the same, but they perform more thorough checks and they will also use Snyk (if it's installed). While working on your code, it is recommended to run guard:audit:dev form time to time, since it checks all your dependencies for all vulnerabilities. Use guard:audit:ci for your prod builds .

CI usage

The guard:lint, guard:audit:ci, guard:a11y and guard:test:headless commands are ideal for CI usage, since the they return non-zero exit code on error and they print output only to stdout.

E2E tests: automatic request caching

During E2E tests it is possible to cache network requests, so your app needs to perform them only once and after that each request will be served from the local cache. This can greatly speed up your tests. Enable this feature by changing the following option in cypress.json:

"autorecord": { "forceRecord": true }

Run your tests now and the network requests will be recorded. Set the option to "false" again to stop recording and start using the cached responses. All subsequent test runs will use the cache until you clear it (by enabling recording again).

For further info on how this works, please see Cypress autorecord plugin docs.

npm run guard:test:all -- -e report=true

Bugs, features, feedback

Please use our issue tracker to report any bugs, request new features or ask questions.

That's it, have fun! :)