JSPM

@liferay/js-insights

0.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q40396F
  • License BSD-3-Clause

Tool that analyzes Liferay's JS code base to produce valuable insights about usages, dependencies, features...

Package Exports

  • @liferay/js-insights

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@liferay/js-insights) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@liferay/js-insights

A simple dependency analysis reporter. It scans ES6 modules for imports and generate a report on used external packages.

Installation

Either:

  • Install globally: yarn global add @liferay/js-insights; or:
  • Use the latest without installing: npx @liferay/js-insights (see below for usage).

Usage

liferay-js-insights [option...]

Options:
  --airtable          [optional: dumps the analysis to a remote airtable installation]
  --airtableApiKey    [optional: airtable API KEY]
  --airtableBaseKey   [optional: airtable base]
  --help
  --insights          [optional: comma-separated list of insights to run]
  --json              [optional: dumps the analysis as a json file]
  --output            [optional: output name for the reporter]

Default Report

By default, a table-based report will be displayed on screen unless a different reporter is selected.

You can choose which insight fields to show by passing them as comma-separated-values in the --output argument. By default, the table will show the meta.app, meta.name, dependencies.clay3 and dependencies.react fields.

npx @liferay/js-insights --output meta.app,meta.name,dependencies.react src/**/*.es.js

Default Table Report

JSON Report

When the --json flag is passed, collected insights will be dumped in a ${name}.json file. The name of the file can be passed using the --name flag. If no flag is passed the name will be that of the cwd last folder.

npx @liferay/js-insights --json src/**/*.es.js

Default Table Report

Airtable Report

It's possible to persist the collected insights in an Airtable table by passing the --airtable flag.

The setup in advance requires:

  • An existing Airtable Base - Key for the Base can be provided as --baseKey or as an LFR_DEPS_AIRTABLE_BASE_KEY environment variable.

  • A valid API_KEY for the Airtable Base - The API_KEY can be provided as --apiKey or as an LFR_DEPS_AIRTABLE_API_KEY environment variable.

  • An existing Airtable Table with the following structure:

    • module:{string} - Name of the module with the dependencies. Acts as the primary key of the table.
    • app:{string} - Parent application of the module.
    • url:{URL} - GitHub URL of the module.
    • clay3:{[string]} - List of dependencies with Clay3 packages (@clayui/*).
    • react:{[string]} - List of dependencies with React packages (frontend-js-react-web).
    • js:{[string]} - List of dependencies with the common package (frontend-js-web).
    • metal:{[string]} - List of dependencies with Metl.js packages (metal-*).
    • clay2:{[string]} - List of dependencies with Clay2 packages (clay-*).
    • others:{[string]} - List of other dependencies.
  • The Table name should be provided as --output. If none is passed, it defaults to master.

npx @liferay/js-insights --airtable src/**/*.es.js

Default Table Report

Known limitations

  • Too many to list them here for now :D