{"_id":"@aayush-dev/dockerizer","_rev":"5-686769acc141303f33f7ccef0c78de18","name":"@aayush-dev/dockerizer","dist-tags":{"latest":"1.0.10"},"versions":{"1.0.0":{"name":"@aayush-dev/dockerizer","version":"1.0.0","keywords":[],"author":"","license":"ISC","_id":"@aayush-dev/dockerizer@1.0.0","maintainers":[{"name":"aayush-dev","email":"aayushbhatt28306@gmail.com"}],"bin":{"dockerizer":"index.js"},"dist":{"shasum":"6e7a261e61fe130d4dbbfc2913b9035a83ff6959","tarball":"https://registry.npmjs.org/@aayush-dev/dockerizer/-/dockerizer-1.0.0.tgz","fileCount":2,"integrity":"sha512-AHqQOqDxPZuihiIiDjjQyQywfoUypqwviwbzdHxQuvGlZ9Y8EsJE+3fLzQ2C+gx7Zgu3GlxJnWp8MvQ/dQpnXA==","signatures":[{"sig":"MEUCIAG8vgqr2Pb1JpqjmW1+OzPjFYlyT1Tvf0Z+uX+UroGWAiEAzEqX7wPMf6uGeTgKyOv13uEtwGnfv3ZSLN0bH4q6iCI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":332},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"aayush-dev","email":"aayushbhatt28306@gmail.com"},"_npmVersion":"10.9.2","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dockerizer_1.0.0_1780830947385_0.9283591658497539","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aayush-dev/dockerizer","version":"1.0.1","keywords":[],"author":"","license":"ISC","_id":"@aayush-dev/dockerizer@1.0.1","maintainers":[{"name":"aayush-dev","email":"aayushbhatt28306@gmail.com"}],"bin":{"dockerizer":"index.js"},"dist":{"shasum":"01825be8fbb4f770705121ae03cf90fb917fc21d","tarball":"https://registry.npmjs.org/@aayush-dev/dockerizer/-/dockerizer-1.0.1.tgz","fileCount":2,"integrity":"sha512-gFmikjkJl9hjiyByUXq3uEvlSMfEDiUYWRoxR6oJHewugS4ymrjHYsht2mNkb98/4DktuTBW/EUQ5l8+Mo9AhQ==","signatures":[{"sig":"MEUCIQCk7qB9MRl6A7F/ll85D25h3vavrITWNJ65vdAyBVi9BQIgf9Q+JSCrC4y1aa0dLNYCGSmiitq24jE4umorDHAXclg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"aayush-dev","email":"aayushbhatt28306@gmail.com"},"_npmVersion":"10.9.2","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dockerizer_1.0.1_1780831460966_0.47519700622523575","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@aayush-dev/dockerizer","version":"1.0.8","keywords":[],"author":"","license":"ISC","_id":"@aayush-dev/dockerizer@1.0.8","maintainers":[{"name":"aayush-dev","email":"aayushbhatt28306@gmail.com"}],"bin":{"dockerizer":"index.js"},"dist":{"shasum":"6ede1f74b6f7ec2795d449524d8b3eb9ef5222d2","tarball":"https://registry.npmjs.org/@aayush-dev/dockerizer/-/dockerizer-1.0.8.tgz","fileCount":14,"integrity":"sha512-uOH5PErYREGpBH44WU7Ek0+5C1f9CE2Nym445qomdzHuP/4Xgjv14NTeT3IYwsi1+DbXIfyCQvTc9wsadqWDGA==","signatures":[{"sig":"MEQCIHxAjRGj5xthzNCJvZpInBuvD45gJAeswkkaIhhpt51xAiABu+zpA9YYemEKyGZYWOMbWyfsBOEgsvxfPtvAhrcC5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16489},"main":"index.js","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"aayush-dev","email":"aayushbhatt28306@gmail.com"},"_npmVersion":"10.9.2","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dockerizer_1.0.8_1780837574766_0.41905596890703833","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@aayush-dev/dockerizer","version":"1.0.9","keywords":[],"author":"","license":"ISC","_id":"@aayush-dev/dockerizer@1.0.9","maintainers":[{"name":"aayush-dev","email":"aayushbhatt28306@gmail.com"}],"bin":{"dockerizer":"index.js"},"dist":{"shasum":"fa622aaba82c21962722ae069d031f7b3146d6f5","tarball":"https://registry.npmjs.org/@aayush-dev/dockerizer/-/dockerizer-1.0.9.tgz","fileCount":15,"integrity":"sha512-wzZbyKi4IVzcXSSYrTsjJMTYeuMxNHCcDFmcwDmkTaVvfBn8ZZTovT86gcKeyB7E0/3G1XArI52nRf4POEy+Lg==","signatures":[{"sig":"MEYCIQD6MJpuSUEFnILKu0bNnSXJ66iYf74wZVoZUU5mLkwflgIhAKiD5BDE8jU81IzXmoy9y3UeBmvj9v/qnonlq8dq7aaY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24016},"main":"index.js","gitHead":"11fe28b18574a9b9f09dde164d11730232fc7a3f","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"aayush-dev","email":"aayushbhatt28306@gmail.com"},"_npmVersion":"10.9.2","description":"Dockerizer is an intelligent, zero-config utility that automatically analyzes your Node.js projects, detects frameworks, databases, and capabilities, and generates optimized, production-ready `Dockerfile` and `.dockerignore` files customized for your proj","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dockerizer_1.0.9_1781329632594_0.7593186479271066","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@aayush-dev/dockerizer","version":"1.0.10","main":"index.js","bin":{"dockerizer":"index.js"},"scripts":{"test":"node --test tests/*.test.js"},"keywords":[],"author":"","license":"ISC","description":"Dockerizer is an intelligent, zero-config utility that automatically analyzes your Node.js projects, detects frameworks, databases, and capabilities, and generates optimized, production-ready `Dockerfile` and `.dockerignore` files customized for your proj","dependencies":{"figlet":"^1.11.0"},"_id":"@aayush-dev/dockerizer@1.0.10","gitHead":"cafc5010c1877a7a431dd5344ab9ae87d9108d0d","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-chrOsHeQdBTZyw3P9Lu9Zoy4nn0dBs7u5J1rw8jKieuXFsKCOeqrgAmc7IB6Z6byoLxwJFXjMxROolEjEQJZUg==","shasum":"93b6619bf54e923c53c1ea31027d518a148bd32f","tarball":"https://registry.npmjs.org/@aayush-dev/dockerizer/-/dockerizer-1.0.10.tgz","fileCount":15,"unpackedSize":27465,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDlFEuS2yeXFBzBOYswGcQjTvz43PJAJ44w+CAov0Ia9gIgMQjIyRSv//XMyef1yk5iWBq4e3SzfVqnHYo65KedOjA="}]},"_npmUser":{"name":"aayush-dev","email":"aayushbhatt28306@gmail.com"},"directories":{},"maintainers":[{"name":"aayush-dev","email":"aayushbhatt28306@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dockerizer_1.0.10_1781330702216_0.616702266876642"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-07T11:15:47.166Z","modified":"2026-06-13T06:05:02.494Z","1.0.0":"2026-06-07T11:15:47.588Z","1.0.1":"2026-06-07T11:24:21.127Z","1.0.8":"2026-06-07T13:06:14.898Z","1.0.9":"2026-06-13T05:47:12.726Z","1.0.10":"2026-06-13T06:05:02.387Z"},"license":"ISC","keywords":[],"description":"Dockerizer is an intelligent, zero-config utility that automatically analyzes your Node.js projects, detects frameworks, databases, and capabilities, and generates optimized, production-ready `Dockerfile` and `.dockerignore` files customized for your proj","maintainers":[{"name":"aayush-dev","email":"aayushbhatt28306@gmail.com"}],"readme":"# 🐳 Dockerizer\n\nDockerizer is an intelligent, zero-config utility that automatically analyzes your Node.js projects, detects frameworks, databases, and capabilities, and generates optimized, production-ready `Dockerfile` and `.dockerignore` files customized for your project.\n\n---\n\n## 🔄 Interactive Flow of the Application\n\nBelow is an interactive and visual overview of how Dockerizer processes your application. Expand each step to see the underlying code files and operations!\n\n### 📊 Pipeline Architecture\n```mermaid\ngraph TD\n    Start([index.js]) -->|Calls| Orchestrator[analyze.js]\n    Orchestrator -->|1. Walk Dir| Scanner[walkDirectory.js]\n    Orchestrator -->|2. Parse Dependencies| Analyzer[packageAnalyzer.js]\n    Orchestrator -->|3. Match Tech Stack| Detector[frameworkDetector.js]\n    Orchestrator -->|4. Get User Preferences| Questions[askQuestions / CLI Prompts]\n    Orchestrator -->|5. Build & Cmd Config| Configurator[Auto-resolve CMD & Build Steps]\n    Configurator -->|6. Generate Files| Generator[dockerfileGenerator.js]\n    Generator -->|Writes| Dockerfile[Dockerfile]\n    Generator -->|Writes| Dockerignore[.dockerignore]\n\n    classDef stage fill:#2b3a4a,stroke:#3b82f6,stroke-width:2px,color:#fff;\n    classDef files fill:#1e293b,stroke:#10b981,stroke-width:2px,color:#fff;\n    class Scanner,Analyzer,Detector,Generator,Questions files;\n    class Orchestrator stage;\n```\n\n---\n\n## 🛠️ Step-by-Step Breakdown (Click to Expand)\n\n<details>\n<summary><b>1. Entry Point & Orchestration</b></summary>\n<br>\n\n- **File:** [index.js](file:///d:/Programs/Projects/dockerizer/index.js)\n- **Role:** Serves as the CLI entry point. It bootstraps the entire analyzer command.\n- **Orchestration File:** [src/commands/analyze.js](file:///d:/Programs/Projects/dockerizer/src/commands/analyze.js)\n  - Coordinates all components by feeding output from the scanner and analyzer into the detector, verifying configurations with the user, and invoking the generator.\n\n</details>\n\n<details>\n<summary><b>2. Project Scanner</b></summary>\n<br>\n\n- **File:** [src/scanner/walkDirectory.js](file:///d:/Programs/Projects/dockerizer/src/scanner/walkDirectory.js)\n- **Role:** Recursively crawls the current working directory (`process.cwd()`).\n- **Details:**\n  - Ignores large/system folders like `node_modules` and `.git`.\n  - Normalizes file paths cross-platform to forward slashes (`/`).\n  - Identifies if critical configuration files (e.g. `package.json`, `package-lock.json`) exist.\n\n</details>\n\n<details>\n<summary><b>3. Dependency Analyzer</b></summary>\n<br>\n\n- **File:** [src/analyzer/packageAnalyzer.js](file:///d:/Programs/Projects/dockerizer/src/analyzer/packageAnalyzer.js)\n- **Role:** Inspects project-specific metadata.\n- **Details:**\n  - Reads the root-level `package.json`.\n  - Extracts lists of `dependencies` and `devDependencies`.\n  - Checks if a main entry point (`main`) or executable start/dev scripts are defined.\n\n</details>\n\n<details>\n<summary><b>4. Framework & Feature Detector</b></summary>\n<br>\n\n- **File:** [src/detectors/frameworkDetector.js](file:///d:/Programs/Projects/dockerizer/src/detectors/frameworkDetector.js)\n- **Role:** Matches project dependencies against known tech-stack blueprints.\n- **Detections:**\n  - **Frameworks:** `express`, `next`, `nest`, `fastify`, `koa`, `react`, `react-vite`, `vue`, `nuxt`, `angular`, `svelte`, or default `node`.\n  - **Databases:** `mongodb`, `postgresql`, `mysql`, `sqlite`, or `sequelize`.\n  - **Support Features:** Realtime connections (`socket.io`, `ws`), File Uploads (`multer`, `formidable`), and Caching (`redis`, `ioredis`).\n\n</details>\n\n<details>\n<summary><b>5. Interactive Customizer</b></summary>\n<br>\n\n- **Function:** `askQuestions` in [src/commands/analyze.js](file:///d:/Programs/Projects/dockerizer/src/commands/analyze.js)\n- **Role:** Interactive user confirmation.\n- **Details:**\n  - Displays the auto-detected configuration.\n  - If some features were not detected, allows the user to manually override and set databases, realtime, caching, or file uploads.\n  - Asks for the port to expose in the container, suggesting sensible framework defaults (e.g., `8000` for Express, `80` for React, `3000` for general node).\n\n</details>\n\n<details>\n<summary><b>6. CMD & Build Resolution</b></summary>\n<br>\n\n- **Function:** inside [src/commands/analyze.js](file:///d:/Programs/Projects/dockerizer/src/commands/analyze.js)\n- **Role:** Computes Docker build steps.\n- **Details:**\n  - Resolves standard run commands: `npm start`, `npm run dev`, or `node <file>.js` based on scripts and entrypoints.\n  - Appends Vite host flags (`-- --host`) if necessary so the dev server binds correctly inside the container.\n  - Determines if a build step (`RUN npm run build`) is required for front-end and SPA architectures.\n\n</details>\n\n<details>\n<summary><b>7. Dockerfile & Ignore Generator</b></summary>\n<br>\n\n- **File:** [src/generators/dockerfileGenerator.js](file:///d:/Programs/Projects/dockerizer/src/generators/dockerfileGenerator.js)\n- **Role:** Writes the final production files.\n- **Details:**\n  - Dynamically selects one of the templates from `templates/` (e.g. `node`, `express`, `next`, `react`).\n  - Injects variables:\n    * `{{NODE_VERSION}}`: Inherited directly from your local machine's running Node.js version.\n    * `{{PORT}}`: User-confirmed port.\n    * `{{BUILD_STEP}}`: E.g. `RUN npm run build`.\n    * `{{CMD}}`: Start command formatted as a JSON array (e.g. `[\"npm\", \"start\"]`).\n  - Generates `.dockerignore` to keep your Docker context clean, excluding build logs, local node modules, and credentials/environment files (`.env`).\n\n</details>\n\n---\n\n## 🚀 Getting Started\n\nRun the tool in your project root:\n```bash\nnpx @aayush-dev/dockerizer\n```\nThe terminal will guide you through confirmation, and output your configured `Dockerfile` and `.dockerignore`!\n\n","readmeFilename":"README.md"}