{"id":48708,"library":"ngma","title":"ngMigration Assistant","description":"Command-line utility to scan AngularJS applications and recommend migration paths to Angular. Version 1.0.6 is the latest stable release. It analyzes code complexity, SLOC, antipatterns, and AngularJS version to suggest either rewrite or phased upgrade via ngUpgrade. Key differentiators: built-in antipattern detection, preparation report generation, and explicit rewrite threshold calculation. Periodic releases with no set cadence.","status":"active","version":"1.0.6","language":"javascript","source_language":"en","source_url":"https://github.com/ellamaolson/ngMigration-Assistant","tags":["javascript"],"install":[{"cmd":"npm install ngma","lang":"bash","label":"npm"},{"cmd":"yarn add ngma","lang":"bash","label":"yarn"},{"cmd":"pnpm add ngma","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"filesystem traversal and ignore pattern matching","package":"glob","optional":false},{"reason":"parsing .gitignore files into glob patterns","package":"parse-gitignore","optional":false},{"reason":"counting source lines of code (SLOC)","package":"node-sloc","optional":false},{"reason":"synchronous user input for CLI interaction","package":"readline-sync","optional":false}],"imports":[{"note":"Package is ESM-only; named export. CommonJS require will fail.","wrong":"const analysisTool = require('ngma');","symbol":"analysisTool","correct":"import { analysisTool } from 'ngma'"},{"note":"Package also exports a default class. Ensure TypeScript 'esModuleInterop' is true for default import.","wrong":null,"symbol":"analysisTool (default import)","correct":"import AnalysisTool from 'ngma'"},{"note":"AnalysisResult is exported only as a type; using it in value position will cause runtime error.","wrong":"import { AnalysisResult } from 'ngma'","symbol":"AnalysisResult type","correct":"import type { AnalysisResult } from 'ngma'"}],"quickstart":{"code":"import { analysisTool } from 'ngma';\n\nconst tool = new analysisTool();\ntool.runAnalysis('/path/to/angularjs-app')\n  .then(recommendation => {\n    console.log('Recommendation:', recommendation);\n  })\n  .catch(err => {\n    console.error('Analysis failed:', err);\n  });\n\n// Alternatively, use CLI:\n// ngma /path/to/angularjs-app","lang":"typescript","description":"Shows programmatic usage: create analysisTool instance, call runAnalysis with app path, and handle the resulting recommendation promise."},"warnings":[{"fix":"Use asynchronous methods (e.g., countLinesOfCode) and await promises instead of blocking.","message":"Analysis may be slow on large codebases due to synchronous file operations.","severity":"gotcha","affected_versions":"all"},{"fix":"Ensure the process has appropriate write permissions or set up a working directory.","message":"Must have write permissions to the analyzed directory for writing reports.","severity":"gotcha","affected_versions":"all"},{"fix":"Avoid using internal methods; rely on the public API: runAnalysis() and runRecommendation().","message":"Method 'buildPathIgnoringGlobs' is internal and may change without notice.","severity":"deprecated","affected_versions":"all"}],"env_vars":null,"search_vec":"'1.0.6':18 'analyz':25 'angular':16 'angularj':9,31 'antipattern':29,47 'applic':10 'assist':2 'built':45 'built-in':44 'cadenc':62 'calcul':56 'code':26 'command':4 'command-lin':3 'complex':27 'detect':48 'differenti':43 'either':35 'explicit':53 'generat':51 'javascript':63 'key':42 'latest':21 'line':5 'migrat':13 'ngmigrat':1 'ngupgrad':41 'path':14 'period':57 'phase':38 'prepar':49 'recommend':12 'releas':23,58 'report':50 'rewrit':36,54 'scan':8 'set':61 'sloc':28 'stabl':22 'suggest':34 'threshold':55 'upgrad':39 'util':6 'version':17,32 'via':40","created_at":"2026-06-07T16:58:03.070600+00:00","updated_at":"2026-06-07T16:58:03.070600+00:00","problems":[{"fix":"Run 'npm install -g ngma' to install globally, or 'npm install ngma' for local project use.","cause":"Package not installed globally or locally.","error":"Error: Cannot find module 'ngma'"},{"fix":"Switch to ES modules: use import or ensure your package.json has \"type\": \"module\".","cause":"Using CommonJS require() on ESM-only package.","error":"TypeError: analysisTool is not a constructor"},{"fix":"Run the tool with appropriate permissions or change working directory to a writable location.","cause":"No write permission to the output directory.","error":"Error: EACCES: permission denied, open '/path/to/.ngma-report.json'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/ellamaolson/ngMigration-Assistant#readme","github":"https://github.com/ellamaolson/ngMigration-Assistant","docs":null,"changelog":null,"pypi":null,"npm":"ngma","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}