tauri/cli/tauri.js/bin/tauri-init.js
Zak Patterson 43a8c4d2bc
fix #920: Create recipes (#930)
* Create recipes

A recipe consists of:
	* Name
	* List of NPM dependencies required (dev and production)
	* Sub-commands needed
		For example, the react recipes run create-react-app to set
		up the UI. Future recipes can do anything, they could pull
		down a sample UI, clone a repository, download a static HTML
		file, initialize another environment that compiles to JS/wasm etc.

The devPath and dist folders nomally configured by the init command
are overridden by the recipe definition.

* Fix no recipe prompts

* Fix linter unsafe assignment error

* Add `beforeXCommand` settings to recipes

This is so good, it makes it possible to just run:

> yarn init
> yarn add tauri
> yarn tauri init # with recipe selected, adds app ui
> yarn tauri dev # starts app ui dev server and rust component

* Rename init to create

Also improve so it exports a function that can be passed
arguments, instead of just reading directly from command line

* Add new tauri init command aliased to create

* Update changes file

* Remove unneeded import

* Add customized splash page for react recipes

* Remove unneeded recipe buildconfig property

* Add no-browser setting to start react dev server

* Revert "Add no-browser setting to start react dev server"

This reverts commit 22bcf3ac5a.
2020-08-17 12:07:44 -05:00

58 lines
1.5 KiB
JavaScript

const parseArgs = require('minimist')
const tauriCreate = require('./tauri-create')
/**
* init is an alias for create -r none, same as
* creating a fresh tauri project with no UI recipe applied.
*
* @type {object}
* @property {boolean} h
* @property {boolean} help
* @property {string|boolean} f
* @property {string|boolean} force
* @property {boolean} l
* @property {boolean} log
* @property {boolean} d
* @property {boolean} directory
*/
function main(cliArgs) {
const argv = parseArgs(cliArgs, {
alias: {
h: 'help',
},
boolean: ['h']
})
if (argv.help) {
printUsage()
process.exit(0)
}
// delegate actual work to create command
tauriCreate([...cliArgs, '-r', 'none'])
}
function printUsage() {
console.log(`
Description
Inits the Tauri template. If Tauri cannot find the tauri.conf.json
it will create one.
Usage
$ tauri init
Options
--help, -h Displays this message
--ci Skip prompts
--force, -f Force init to overwrite [conf|template|all]
--log, -l Logging [boolean]
--directory, -d Set target directory for init
--tauri-path, -t Path of the Tauri project to use (relative to the cwd)
--app-name, -A Name of your Tauri application
--window-title, -W Window title of your Tauri application
--dist-dir, -D Web assets location, relative to <project-dir>/src-tauri
--dev-path, -P Url of your dev server
`)
}
module.exports = main