{"id":22389478,"url":"https://github.com/joaquimnetocel/images-folder-optimizer","last_synced_at":"2025-10-07T12:41:27.720Z","repository":{"id":196373153,"uuid":"695606207","full_name":"joaquimnetocel/images-folder-optimizer","owner":"joaquimnetocel","description":"This is a high speed package that uses Sharp.js to recurively transform, convert and optimize images from a folder to smaller, web-friendly JPEG, PNG, WebP, GIF and AVIF images. It is also possible to add watermark to the transformed/optimized images.","archived":false,"fork":false,"pushed_at":"2023-10-03T22:51:27.000Z","size":28569,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-31T08:48:39.974Z","etag":null,"topics":["avif","gif","image-optimization","image-processing","image-resize","jpeg","png","tiff","webp"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/images-folder-optimizer","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joaquimnetocel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-23T17:19:02.000Z","updated_at":"2025-07-28T14:35:33.000Z","dependencies_parsed_at":"2024-10-20T19:25:15.772Z","dependency_job_id":null,"html_url":"https://github.com/joaquimnetocel/images-folder-optimizer","commit_stats":null,"previous_names":["joaquimnetocel/images-folder-optimizer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/joaquimnetocel/images-folder-optimizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaquimnetocel%2Fimages-folder-optimizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaquimnetocel%2Fimages-folder-optimizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaquimnetocel%2Fimages-folder-optimizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaquimnetocel%2Fimages-folder-optimizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joaquimnetocel","download_url":"https://codeload.github.com/joaquimnetocel/images-folder-optimizer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaquimnetocel%2Fimages-folder-optimizer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273467810,"owners_count":25111133,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avif","gif","image-optimization","image-processing","image-resize","jpeg","png","tiff","webp"],"created_at":"2024-12-05T03:12:02.408Z","updated_at":"2025-10-07T12:41:22.699Z","avatar_url":"https://github.com/joaquimnetocel.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# images-folder-optimizer\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src='./logo.png' width='100' alt='LOGO'\u003e\n\u003c/div\u003e\n\nA high performance package that uses [sharp.js](https://sharp.pixelplumbing.com/) to recursively optimize, transform and convert images from a folder to smaller, web-friendly JPEG, PNG, WebP, GIF and AVIF images. It is also possible to add watermark to the output images controlling opacity and positioning.\n\n![GITHUB VERSION](https://img.shields.io/github/package-json/v/joaquimnetocel/images-folder-optimizer?label=github%20version\u0026logo=github\u0026color=lightgray) ![NPM VERSION](https://img.shields.io/npm/v/images-folder-optimizer?color=red\u0026logo=npm\u0026label=npm%20version) ![NPM Downloads](https://img.shields.io/npm/dw/images-folder-optimizer?color=red\u0026label=npm%20downloads\u0026logo=npm) ![NPM License](https://img.shields.io/npm/l/images-folder-optimizer?color) [![Twitter](https://img.shields.io/twitter/follow/:twitterHandle.svg?style=social\u0026label=@joaquimnetocel)](https://twitter.com/joaquimnetocel)\n\n## FEATURES\n\n- PROCCESS ALL IMAGE FILES IN A FOLDER AT ONCE\n- SIGNIFICANT REDUCTION IN IMAGE SIZE\n- SCAN FOR IMAGE FILES RECURSIVELY ON ALL SUBFOLDERS\n- CONVERSION BETWEEN IMAGE FORMATS, CHOOSING BOTH INPUT AND OUTPUT FORMATS\n- IMAGE RESIZING\n- IMAGE TRANSFORMATIONS (ONLY BLUR FOR NOW)\n- POSSIBILITY TO OVERLAP A WATERMARK IMAGE CONTROLLING ITS OPACITY\n- FULL TYPESCRIPT SUPPORT\n- FULL CONTROL FOR SHARP.JS PARAMETERS\n\n## HOW TO USE IN YOUR PROJECT\n\n- INSTALL THE PACKAGE:\n\n  ```bash\n  npm install -D images-folder-optimizer\n  ```\n\n- CREATE A JAVASCRIPT (OR TYPESCRIPT) FILE, AS `example.js`:\n\n  ```javascript\n  import { functionOptimizeImages } from 'images-folder-optimizer';\n\n  functionOptimizeImages({\n      stringOriginFolder: 'static/images/originals',\n      stringDestinationFolder: 'static/images/optimized',\n      arrayOriginFormats: ['jpg', 'png'],\n      arrayDestinationFormats: ['webp', 'avif'],\n  }).then((results) =\u003e {\n      console.table(results);\n  });\n  ```\n\n- RUN THE FILE:\n\n  ```bash\n  node example.js\n  ```\n\n- CHECK THE NEW IMAGES IN `static/images/optimized`.\n\n## BUILT-IN EXAMPLES\n\nYOU CAN FIND BUILT-IN EXAMPLES IN `src/examples/` [[LINK](https://github.com/joaquimnetocel/images-folder-optimizer/tree/main/src/examples)]. LET'S TRY ONE OF THEM:\n\n  ```bash\n  npx tsc\n  node dist/examples/exampleFormatConversion.js\n  ```\n\n## PARAMETERS AND TYPING\n\n- PARAMETERS FOR `functionOptimizeImages`:\n\n| PARAMETER | DESCRIPTION | TYPE | REQUIRED | DEFAULT |\n| - | - | - | - | - |\n| `stringOriginFolder` | THE FOLDER WITH THE ORIGINAL IMAGES | `string` | YES | - |\n| `stringDestinationFolder` | THE FOLDER WHERE THE OPTIMIZED IMAGES ARE GOING TO BE SAVED | `string` | YES | - |\n| `arrayOriginFormats` | FORMATS OF THE ORIGINAL IMAGES | ARRAY WITH ELEMENTS BEEING 'webp' OR 'avif' OR 'png' OR 'jpg' OR 'tiff' OR 'gif' | YES | - |\n| `arrayDestinationFormats` | FORMATS FOR THE NEW IMAGES | ARRAY WITH ELEMENTS BEEING 'webp' OR 'avif' OR 'png' OR 'jpg' OR 'tiff' OR 'gif' OR 'svg' | YES | - |\n| `stringFileNameSuffix` | SUFIX FOR THE NEW FILE NAMES. EVERY ORIGINAL FILE NAME WITH THIS SUFIX IS GOING TO BE IGNORED | NO | - |\n| objectResizeOptions | SHARP.JS OPTIONS FOR IMAGE RESIZING | [CHECK IT HERE](https://sharp.pixelplumbing.com/api-resize#resize) | NO | - |\n| objectPngOptions | SHARP.JS OPTIONS FOR PNG TRANSFORMATIONS | [CHECK IT HERE](https://sharp.pixelplumbing.com/api-output#png) | NO | - |\n| objectJpegOptions | SHARP.JS OPTIONS FOR JPG TRANSFORMATIONS | [CHECK IT HERE](https://sharp.pixelplumbing.com/api-output#jpeg) | NO | - |\n| objectWebpOptions | SHARP.JS OPTIONS FOR WEBP TRANSFORMATIONS | [CHECK IT HERE](https://sharp.pixelplumbing.com/api-output#webp) | NO | - |\n| objectAvifOptions | SHARP.JS OPTIONS FOR AVIF TRANSFORMATIONS | [CHECK IT HERE](https://sharp.pixelplumbing.com/api-output#avif) | NO | - |\n| objectAvifOptions | SHARP.JS OPTIONS FOR AVIF TRANSFORMATIONS | [CHECK IT HERE](https://sharp.pixelplumbing.com/api-output#avif) | NO | - |\n| objectTiffOptions | SHARP.JS OPTIONS FOR TIFF TRANSFORMATIONS | [CHECK IT HERE](https://sharp.pixelplumbing.com/api-output#tiff) | NO | - |\n| objectGifOptions | SHARP.JS OPTIONS FOR GIF TRANSFORMATIONS | [CHECK IT HERE](https://sharp.pixelplumbing.com/api-output#gif) | NO | - |\n| objectBlurOptions | SHARP.JS OPTIONS FOR BLUR TRANSFORMATIONS | [CHECK IT HERE](https://sharp.pixelplumbing.com/api-operation#blur) | NO | - |\n| objectWatermarkOptions | OBJECT WITH OPTIONS FOR WATERMARK INSERTION | `typeWatermarkOptions` DESCRIBED BELLOW | NO | - |\n\n- typeWatermarkOptions TYPE:\n\n| KEY | DESCRIPTION | TYPE | REQUIRED | DEFAULT |\n| - | - | - | - | - |\n| stringWatermarkFile | PATH OF THE IMAGE TO USE AS WATERMARK | `string` | YES | - |\n| numberOpacity | WATERMARK OPACITY | `number` BETWEEN 0 AND 1 | YES | - |\n| objectResizeOptions | SHARP.JS OPTIONS FOR RESIZING THE WATERMARK IMAGE | [CHECK IT HERE](https://sharp.pixelplumbing.com/api-resize#resize) | NO | - |\n| stringGravity | WATERMARK POSITION | 'centre' OR 'northwest' OR 'northeast' OR 'southeast' OR 'southwest' | NO | `centre` |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoaquimnetocel%2Fimages-folder-optimizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoaquimnetocel%2Fimages-folder-optimizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoaquimnetocel%2Fimages-folder-optimizer/lists"}