Cookie Consent by TIBET


tibet-clone(1) -- clones a project from a template directory


tibet clone <target>|[--name <appname>] [--dir <dirname>] [--dna <template>] [--xmlns <nsuri>] [--list] [--force] [--update]


Clones a template directory, considered the dna, to create a new project.

<target> or --name is required and should be a valid name for use within a JavaScript context. The application name becomes part of automatically generated types in the TIBET system.

By default the target --dir will be the new project's appname unless otherwise specified via --dir. You can use . to clone to the current directory HOWEVER no checks are currently done to prevent potential data loss. Be careful!

NOTE: a future update to this command should provide interactive use that will allow you to manage the clone process in a more incremental fashion.

Once a project template has been cloned you use the tibet init command to initialize the project by triggering installation of all project dependencies.


  • --dir : Specify a particular target directory. Defaults to the value of the --name parameter so tibet clone hello will presume --dir=./hello for example. The value . can be used to target the current directory without creating a new subdirectory.

  • --dna : Lets you clone any valid template in TIBET's dna directory or a directory of your choosing. This latter option lets you create your own reusable custom application templates.

  • --xmlns : Lets you define a specific XMLNS URI for any XHTML and CSS references. The default will be urn:app: or the standard TIBET prefix URI.

  • --force : Required if you use . as a simple reminder to be careful. You can also use --force with existing directories but no checks are done to avoid overwriting existing files.

  • --list : Output a list of available dna options. No project is created if you use this option.

  • --name : Lets you rename from the directory name to an alternative name. This lets the directory and appname vary. This is common when cloning to existing directories or poorly named ones like those required for GitHub Pages repositories.

  • --update : Attempts to update the existing project from the files found in the source dna. This option tries to avoid overwriting existing files but should be used with extreme caution.


  • : The project name, used only when cloning to an existing directory with an existing package.json file that can supply this value.

  • tibet.dna : Read to determine the default project DNA to clone for this new project. If this value doesn't exist then default is the name used.


No process environment variables are required by this command.


See the list of available project dna

$ tibet clone --list


Create a new project with default dna

$ tibet clone helloworld

TIBET dna 'default' cloned to helloworld as app 'helloworld'.

Create a new project with couch dna

$ tibet clone hellocouch --dna couch

TIBET dna 'couch' cloned to hellocouch as app 'hellocouch'.

Create a new project in an existing directory

$ tibet clone .

TIBET dna 'default' cloned to . as app 'hellolocal'

Create a named project in an existing directory (empty)

$ tibet clone --name hello .

TIBET dna 'default' cloned to . as app 'hello'.

Create a named project in an existing directory (not empty)

NOTE NOTE NOTE!!! This command can overlay files and is potentially destructive!!! Future versions of the clone command may use yeoman to help avoid file conflicts, allowing this operation to be done safely.

$ tibet clone --name hello . --force

TIBET dna 'default' cloned to . as app 'hello'.


This command has no client-side TSH peer command.



  • tibet-init(1)