{"id":23692453,"url":"https://github.com/yext/jambo","last_synced_at":"2025-09-02T20:33:04.761Z","repository":{"id":37098990,"uuid":"241923940","full_name":"yext/jambo","owner":"yext","description":"A JAMStack implementation with Handlebars","archived":false,"fork":false,"pushed_at":"2024-05-24T19:12:37.000Z","size":1709,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-12-21T13:40:54.410Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yext.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2020-02-20T15:48:53.000Z","updated_at":"2024-05-24T19:11:18.000Z","dependencies_parsed_at":"2024-02-27T17:25:00.265Z","dependency_job_id":"582eace6-9f80-46dd-8663-5374d5d386a8","html_url":"https://github.com/yext/jambo","commit_stats":{"total_commits":257,"total_committers":21,"mean_commits":"12.238095238095237","dds":0.7159533073929961,"last_synced_commit":"fbfb68a789cc3d01b42667b7524f53069ac0fd80"},"previous_names":["yext/jamboree"],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yext%2Fjambo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yext%2Fjambo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yext%2Fjambo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yext%2Fjambo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yext","download_url":"https://codeload.github.com/yext/jambo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231810492,"owners_count":18429999,"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":[],"created_at":"2024-12-30T03:27:55.236Z","updated_at":"2024-12-30T03:28:00.124Z","avatar_url":"https://github.com/yext.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jambo\n\n\u003cdiv\u003e\n  \u003ca href='https://coveralls.io/github/yext/jambo?branch=master'\u003e\n    \u003cimg src='https://coveralls.io/repos/github/yext/jambo/badge.svg?branch=master' alt='Coverage Status' /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\nJambo is a JAMStack implementation using Handlebars.\n\n## Installation\n\nInstall jambo from npm, and save it to your package.json as a dev-dependency.\n\n```bash\nnpm install -D jambo\n```\n\n___\n\n## Usage\n\nJambo has 6 official commands: init, import, override, page, build, and upgrade.\n\n#### Init\n\n```bash\nnpx jambo init\n```\n\nInitiailizes the current directory as a Jambo repository.\n\nThe init command initializes a Jambo repo, and also imports the designated theme.\nCurrently, only answers-hitchhiker-theme is supported.\n\n###### Optional Arguments\n\n--themeUrl _theme_url_\n\nThe git URL of the theme to import, if a theme should be imported on init.\n\n--useSubmodules _true/false_\n\nIf importing a theme on init, whether to import it as a git submodule as opposed to regular files. Defaults to false.\n\n#### Import\n\n```bash\nnpx jambo import --themeUrl https://github.com/yext/answers-hitchhiker-theme.git\n```\n\nThe import command imports the designated theme into the 'themes' folder.\n\n**--themeUrl** _theme_url_\n\nThe git URL of the theme to import.\n\n###### Optional Arguments\n\n--useSubmodules _true/false_\n\nWhether to import the theme as a git submodule, as opposed to regular files. Defaults to false.\n\n#### Override\n\n```bash\nnpx jambo override --theme answers-hitchhiker-theme\n```\n\nThe override command lets you override a specified theme by copying its files into the **overrides** folder.\n\n**--theme** _theme_name_\n\nThe name of the theme to override.\n\n###### Optional Arguments\n\n--path _path_to_override_\n\nYou can specify specific files(s) in the theme to override.\n\n#### Page\n\n```bash\nnpx jambo page --name new_page_name\n```\n\nThe **page** command registers a new page, with the specified name, to be built by Jambo.\n\n**--name** _page_name_\n\nThe name this page will be registered as.\n\n###### - Optional Arguments\n\n--template  _template_name_\n\nThe template to generate the page with.\n\n--layout _layout_name_\n\nThe layout to use around the page.\n\n#### Build\n\n```bash\nnpx jambo build\n```\n\nThe build command builds all pages reigstered within Jambo, and places them inside the 'public' directory. The public directory will be cleared prior to each build, so any static assets in that directory will need to be re-generated.\n\nThe build command uses the 'defaultTheme' attribute in the jambo.json in Jambo's root directory, which must be added to jambo.json manually. Here is an example jambo.json.\n\n```json\n{\n  \"dirs\": {\n    \"themes\":\"themes\",\n    \"cards\": \"cards\",\n    \"config\":\"config\",\n    \"overrides\":\"overrides\",\n    \"output\":\"public\",\n    \"pages\":\"pages\",\n    \"layouts\":\"layouts\"\n  },\n  \"defaultTheme\": \"answers-hitchhiker-theme\"\n}\n```\n\n##### Helpers\n\nThe build command registers a few handlebars helpers for convenience:\n\n* `json(context)`: Renders the context as JSON\n* `ifeq(arg1, arg2, options)`: if arg1 == arg2 then options.fn, otherwise options.inverse\n* `read(fileName)`: Reads contents of the given fileName\n* `concat(prefix, id)`: Concatenates prefix + id\n* `babel(options)`: Adds babel transforms to the given code with the options given\n* `partialPattern(cardPath, opt)`\n* `deepMerge(...args)`: Performs a deep merge of the given objects\n\nNote: The babel helper does not polyfill all necessary functionality needed for IE11 for example.\nYou should use global polyfills if you wish to use them in the code. For example, you might\nwant to import core-js/stable.\n\n\n### Upgrade\n\n```bash\nnpx jambo upgrade\n```\n\nThe upgrade command updates your current defaultTheme to the latest version.\nIt will also automatically execute the theme's upgrade.js script.\n\n###### Optional Arguments\n\n--disableScript _true/false_\n\nYou can disable automatic execution of the upgrade.js script in the theme.\nDefaults to false.\n\n--isLegacy _true/false_\n\nYou can signal whether to pass an --isLegacy flag to the theme's upgrade.js.\nThis can be useful when you need different/additional upgrade logic to upgrade\nfrom older versions of a theme. Defaults to false.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyext%2Fjambo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyext%2Fjambo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyext%2Fjambo/lists"}