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

appcheck-cli

v1.0.15

Published

A CLI tool for checking files and translations

Downloads

21

Readme

AppCheck CLI Tool

App-Check-logo.png

AppCheck is a command-line tool designed to help developers manage and maintain JavaScript/TypeScript projects. It provides features to check for unused files, unused or missing translation keys, unused styling, and unused functions, helping to keep your project clean and efficient.

Features

  • File Usage Analysis: Lists all used and unused files, including the number of lines of code and file sizes.
  • Translation Key Check: Identifies unused or missing translation keys across your project. You can configure this to check translations from an API by setting an apiEndpoint in the configuration or from local files if the apiEndpoint is not configured. Or check translation files stored locally in e.g. ./locales.
  • Styling Analysis: Detects unused styling within your project.
  • Function Analysis: Identifies unused functions to help clean up your codebase.

Installation

Install the AppCheck CLI tool globally via npm:

npm install -g appcheck-cli

Usage

1. Initialize Configuration

Start by setting up the configuration for your project.

appcheck init

Follow the prompts to specify:

  • Directory for Translation Files: Specify the directory where your translation JSON files are stored.
  • Project File Directories: Enter the directories in your project where source code files are stored.
  • Translation Function Name: Enter the function name used in your code for handling translations (e.g., t, translate, i18n).
  • Language Code Format: Choose the format for language codes (e.g., en_US).
  • Language Mappings: Optionally map language codes to different formats (e.g., mapping no to nb_NO).

Example appcheck.config.json:

{
  "translationDir": "./locales",
  "projectDirs": [
    "./app",
    "./components",
    "./context"
  ],
  "translationFunction": "t",
  "languageCodeFormat": "en_US",
  "languages": [
    "en",
    "es",
    "fr",
    "de",
    "no",
    "ru",
    "hu",
    "ch",
    "pl",
    "it",
    "pt"
  ],
  "apiEndpoint": "https://tpsprod.azurewebsites.net/api/translation/translations/",
  "configureMappings": true,
  "languageMapping": [
    {
      "language": "en",
      "mappings": [
        "en_US"
      ]
    },
    {
      "language": "no",
      "mappings": [
        "nb_NO"
      ]
    }
  ]
}

2. Check Files

Analyze your project to find all used and unused files.

appcheck check-files

Example Output:

File Analysis:
File: ./app/components/Header.js
  Size: 1024 bytes
  Lines: 45

File: ./app/components/Footer.tsx
  Size: 2048 bytes
  Lines: 78

File: ./app/views/Home.js
  Size: 512 bytes
  Lines: 20

Total Number of Files: 3
Total Number of Lines of Code: 143
Total Size of Files: 3584 bytes (3.5 KB)

Used files:
  ./app/components/Header.js
  ./app/components/Footer.tsx
  ./app/views/Home.js

Unused files:
  ./app/components/Sidebar.jsx
  ./app/views/About.tsx

3. Check Translations

Identify any unused or missing translation keys in your project.

Using API

If the apiEndpoint is configured in your appcheck.config.json, the translation check will fetch translations from the API based on the configured language codes and mappings.

appcheck check-translations

The tool will fetch translations using the provided API endpoint and the languageMapping specified. It will compare the translation keys fetched from the API with those used in the project directories. If the apiEndpoint is configured, the tool will not scan local files unless the apiEndpoint is removed from the configuration.

Using Local Files

If no apiEndpoint is configured, the tool will look for translation files in the translationDir directory. It will use the language codes directly as specified in the configuration.

appcheck check-translations

Example Output:

AppCheck Translation Analysis
✔ Configuration loaded successfully

Analysis Configuration:
• Translation Source: Local Files
• Translation Directory: ./locales
• Languages to check: en, es, fr, de, no, nb, ru, hu, ch, pl, it, pt
• Project directories: ./app, ./components, ./context
✔ Processed en: Found 286 keys
✔ Processed nb: Found 286 keys
⚠ No translation file found for es
⚠ No translation file found for fr
⚠ No translation file found for de
⚠ No translation file found for no
⚠ No translation file found for ru
⚠ No translation file found for hu
⚠ No translation file found for ch
⚠ No translation file found for pl
⚠ No translation file found for it
⚠ No translation file found for pt
✔ Translation usage analysis complete
✔ UI translation check complete

Analysis Results
• Total unique translation keys: 286
• Used translation keys: 243
• Unused translation keys: 43

Language Summary
• EN:
  - Translation Keys: 286
  - Used Keys: 243
  - Unused Keys: 43
  - Usage: 84.97%
• NB:
  - Translation Keys: 286
  - Used Keys: 243
  - Unused Keys: 43
  - Usage: 84.97%

Detailed results are written to translation_check.log.

4. Check Styling

Detect and report any unused styles in your project.

appcheck check-styling

Example Output:

Unused styles:
  headerStyle
  footerStyle

5. Check Functions

Identify and list any unused functions within your project.

appcheck check-functions

Example Output:

Unused functions:
  calculateTotal
  renderSidebar

6. Help

Get a list of all available commands and their descriptions.

appcheck help

Example Output:

AppCheck CLI Tool

Available Commands:
  appcheck init
    Opens the tools menu to configure and check files.

  appcheck check-files
    Lists all used and unused files in the configured directories, including file size and lines of code.

  appcheck check-translations
    Checks for unused or missing translation keys.

  appcheck check-styling
    Checks for unused styling.

  appcheck check-functions
    Checks for unused functions.

  appcheck help
    Displays help information.

.appcheckignore

You can create a .appcheckignore file to specify keys, key prefixes, suffixes, or types of values (like dates, times, or key values containing numbers) that should be ignored during the translation check. This file should be placed in the root directory of your project.

Example .appcheckignore:

# Ignore specific keys
specific.key.to.ignore
another.key.to.ignore

# Ignore keys with a specific prefix or suffix
prefix*
*suffix

# Ignore keys containing numbers
*\d+*

# Ignore specific types of values (e.g., dates or times)
*\d{4}-\d{2}-\d{2}*
*\d{2}:\d{2}:\d{2}*

Translation Check Log

Results from the translation check, including unused keys, missing translations, and duplicates, are written to a translation_check.log file in the root directory. This file provides detailed information about the check, including where each issue was found.

Example contents of translation_check.log:

---------------------------------------------------------------
Unused translation keys:
---------------------------------------------------------------
  home.title
  about.description
...

---------------------------------------------------------------
Missing Translations in UI:
---------------------------------------------------------------
• app\(auth)\signup.js, Line 50: "Create Account"
...

---------------------------------------------------------------
Duplicate values found in en translations:
---------------------------------------------------------------
  • Value: "Success"
    - Key: "settings.success" in file "locales\en.json" at line 6
    - Key: "events.success" in file "locales\en.json" at line 6
...

Repository

Statistics

  • Weekly Downloads: Weekly Downloads
  • Version: Version

Contributing

If you find a bug or have a feature request, feel free to submit an issue or a pull request on the GitHub repository.

License

This project is licensed under the MIT License - see the LICENSE file for details.