{"id":20383653,"url":"https://github.com/sungardas/condensation","last_synced_at":"2025-10-19T15:28:33.395Z","repository":{"id":28353063,"uuid":"31866806","full_name":"SungardAS/condensation","owner":"SungardAS","description":"Package, reuse and share particles for CloudFormation projects","archived":false,"fork":false,"pushed_at":"2017-08-09T13:35:29.000Z","size":3792,"stargazers_count":44,"open_issues_count":5,"forks_count":11,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-12T09:19:52.237Z","etag":null,"topics":["aws","cloudformation"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SungardAS.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-08T21:43:16.000Z","updated_at":"2025-01-02T01:02:33.000Z","dependencies_parsed_at":"2022-09-09T09:31:07.027Z","dependency_job_id":null,"html_url":"https://github.com/SungardAS/condensation","commit_stats":null,"previous_names":[],"tags_count":67,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SungardAS%2Fcondensation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SungardAS%2Fcondensation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SungardAS%2Fcondensation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SungardAS%2Fcondensation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SungardAS","download_url":"https://codeload.github.com/SungardAS/condensation/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248543989,"owners_count":21121872,"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","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":["aws","cloudformation"],"created_at":"2024-11-15T02:23:43.810Z","updated_at":"2025-10-19T15:28:28.329Z","avatar_url":"https://github.com/SungardAS.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# condensation\n\nPackage, reuse and share particles for CloudFormation projects\n\n![condensation][condensation-image]\n\n[![NPM][npm-image]][npm-url]\n[![Gitter][gitter-image]][gitter-url]\n[![Build Status][travis-image]][travis-url]\n[![Code Climate][codeclimate-image]][codeclimate-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n[![Dependency Status][daviddm-image]][daviddm-url]\n\n\n## Summary\n\nCondensation provides a framework for building and sharing `particles`\nthat when packaged together create [AWS CloudFormation](http://aws.amazon.com/cloudformation/)\nprojects.\n\nProjects are uploaded to S3 and include templates, static assets and/or lambda functions.\n\nCheck out all of Condensation's [features](docs/features.md) and see it\nin action on [YouTube](https://youtu.be/Vj0dRI9qiMM?list=PLYGffQg665R7PtM0XdPEQuJ0ez5j2G0LW).\n\n## Quick Start\n\nGet started fast with [condensation-docker][condensation-docker-url]\n\n```\n$ alias condensation=\"docker run -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -v \\\"$HOME\\\"/.aws/credentials:/home/condensation/.aws/credentials -v \\`pwd\\`:/particles --rm -it sungardas/condensation\"\n\n$ condensation create project particles-MYPROJECT\n$ cd particles-MYPROJECT\n$ condensation run build\n\n# Upload to S3\n$ condensation run deploy\n```\n\nYou can also get started with [nodejs](docs/getting-started.md#nodejs)\n\nNext become familiar with all of Condensation's [tasks](docs/tasks.md)\n\n\n## Use\n\n[Particles](docs/particle-helpers.md)\n\n[Template Helpers](docs/template-helpers.md)\n\n[Handlebars Helpers](docs/handlebars-helpers.md)\n\n[AWS Intrinsic Functions](docs/intrinsic-functions.md)\n\n### Project Structure\n\n    particles-my-project\n    |\n    -- guplfile.js\n    |\n    -- README.md\n    |\n    -- CHANGELOG.md\n    |\n    --particles\n      |\n      -- assets\n      |\n      -- conditions\n      |\n      -- cftemplates\n      |\n      -- helpers\n      |\n      -- mappings\n      |\n      -- metadata\n      |\n      -- outputs\n      |\n      -- parameters\n      |\n      -- resources\n      |\n      -- sets\n      |\n      -- partials\n\nCondensation builds templates with Handlebars helpers that\nare able to load [particles](docs/particle-helpers.md) from the local project\nor from any condensation compatible module added as a npm\ndependency.\n\n### Processing Templates\n\nCondensation will process any template that ends with `.hbs`\n```\n- particles\n|- cftemplates\n |- network.template.json.hbs\n```\n\nThis allows static templates to be deployed alongside compiled templates\n\n### layout support\n\nInstead of including particles within a traditional CloudFormation\ntemplate use a [layout](docs/template-helpers.md#TemplateHelpers.layout)\nto include particles in any order you wish.  They will be added to correct\ntemplate section during the condensation build process.\n\n### Lazy Loading\n\nParticles will only be included in the final distribution if they are\nreferenced in a `hbs` file.\n\n\n## Config Options\n\n    var config = {\n      // Array of S3 buckets to deploy to\n      s3: [\n        {\n          // AWS specific options\n          aws: {\n            region: 'us-east-1',\n            bucket: 'my.bucket.in.us-east-1',\n          },\n\n          // Run CloudFormation validation during the build task for this bucket\n          validate: true,\n\n          // Create this bucket if it does not already exist\n          create: true\n\n          // Prefix all objects (allows for multiple deployments to the same bucket\n          prefix: '',\n\n          labels: ['east']\n        },\n      ],\n      // The prefix to add to all generated gulp tasks (default: 'condensation')\n      // An empty string will remove the prefix\n      //     - condensation:deploy will become deploy\n      taskPrefix: '',\n\n      // Directory that contains the `particles` directory.\n      // Used for test scripts, should not be changed if sharing templates\n      root: './',\n\n      // Where the build task will put the distribution\n      dist: 'dist'\n    };\n\n\n##Front Matter\n\nAll particles are first processed with\n[gray-matter](https://github.com/jonschlinkert/gray-matter) to load any\ndefault data definitions.\n\n## Errors\n\nErrors due to badly formed JSON or failed CF validations will stop the\nprocess and the offending files will be dumped to `condensation_errors`\n\n## Experimental\n\n### condensation.js\n\nIf a project contains `condensation.js` the file will be loaded as a\nmodule and will attement to run the `initialize` function.  If\n`initialize` accepts a single argument then only a callback will be\nprovided.  If `initialize` accepts two arguments the project\nconfiguration will be passed as the first argument and the callback as\nthe second.\n\nThis can be used by a condensation project to bootstrap assets and configuration\nbefore template compiling begins.\n\nExample:\n[particles-cloudsploit-scans](https://github.com/SungardAS/particles-cloudsploit-scans)\n\n\n## License\n\nApache-2.0 ©\n\n## Maintained By\n\n[![Sungard Availability Services | Labs][labs-logo]][labs-github-url]\n\nThis project is maintained by the Labs team at [Sungard Availability\nServices](http://sungardas.com)\n\nGitHub: [https://sungardas.github.io](https://sungardas.github.io)\n\nBlog: [http://blog.sungardas.com/CTOLabs/](http://blog.sungardas.com/CTOLabs/)\n\n\n[codeclimate-image]: https://codeclimate.com/github/SungardAS/condensation/badges/gpa.svg\n[codeclimate-url]: https://codeclimate.com/github/SungardAS/condensation\n[condensation-image]: ./docs/images/condensation_logo.png?raw=true\n[coveralls-image]: https://coveralls.io/repos/SungardAS/condensation/badge.svg\n[coveralls-url]: https://coveralls.io/r/SungardAS/condensation\n[condensation-docker-url]: https://github.com/SungardAS/condensation-docker\n[daviddm-image]: https://david-dm.org/SungardAS/condensation.svg?theme=shields.io\n[daviddm-url]: https://david-dm.org/SungardAS/condensation\n[gitter-image]: https://badges.gitter.im/Join%20Chat.svg\n[gitter-url]: https://gitter.im/SungardAS/condensation?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\n[labs-github-url]: https://sungardas.github.io\n[labs-logo]: https://raw.githubusercontent.com/SungardAS/repo-assets/master/images/logos/sungardas-labs-logo-small.png\n[npm-image]: https://badge.fury.io/js/condensation.svg\n[npm-url]: https://npmjs.org/package/condensation\n[travis-image]: https://travis-ci.org/SungardAS/condensation.svg?branch=master\n[travis-url]: https://travis-ci.org/SungardAS/condensation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsungardas%2Fcondensation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsungardas%2Fcondensation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsungardas%2Fcondensation/lists"}