A command line interface for developing Meteor apps using Mantra.
npm install -g mantra-cli
See RELEASE NOTE if you are upgrading and wondering what has changed in the latest version.
Meteor version 1.3 or higher needs to be present in your machine to create and run apps with mantra-cli.
The available commands are:
Currently, CLI expects you to be in the app root directory.
alias: c
Create a Meteor application using Mantra spec under path
.
It performs the following tasks:
- Create a Meteor app
- Prepare a skeleton structure for Mantra and add
.eslintrc
and.gitignore
- Add Meteor and NPM dependencies
- Install NPM dependencies
--verbose, -v
Log the output of the scripts in the console, rather than silencing them.
--storybook, -s
Create storybook files, and save the configuration to the generated mantra_cli.yaml
.
alias: g
Generate a file of type
and name specified name
.
Possible values are:
action
component
By default, a stateless component is generated. By using --use-class
option
(alias -c
), you can generate a ES2015 class extending React.Component
.
mantra g component core:user_list -c
Mantra-cli can also generate a storybook-file for each component. See the configuration section for more info.
container
Generates a container
and its corresponding component
.
collection
Use --schema
option (alias -s
) to specify the schema solution to use for
your Mongo collections. Currently, you can specify collection2
, and astronomy
.
mantra g collection books -s collection2
method
publication
module
For action
, component
, and container
, tests will also be generated.
If the type
is one of action
, component
, or container
, the name should
follow the format moduleName:entityName
. This is because Mantra is modular
on the client side, and all files of those types belong to a module.
Example
mantra generate component core:posts
mantra generate publication users
mantra generate method comments
Automatic update to index.js
For action
, collection
, method
, and publication
, the command automatically
inserts import
and export
statements to the relevant index.js
file.
alias: d
This command removes files.
Destroys all files that its counterpart mantra generate
command would generate.
You can provide all types
supported by the generate
command.
Mantra-CLI allows you to easily customize its behaviors. Currently, you can customize:
- tab size
- templates
- generateComponentTests (true)
- generateContainerTests (true)
You may customize Mantra-CLI by editing mantra_cli.yaml
on the root directory
of your project. Please open an issue with suggestions for more customization.
The configuration is designed to be similar to [mantrajs-atom-package] (https://github.com/mantrajs/mantrajs-atom-package). The long term goal is to make configuration interchangeable.
- The number of spaces for indentation. Default: 2.
- Type: number
e.g.
tabSize: 4
- The content of the templates generated by CLI
- Type: array
e.g.
templates:
- name: 'component'
text: |
import React from 'react';
const <%= componentName %> = ({}) => {
return (
<div>
<%= componentName %>
</div>
);
}
Individual template configurations must have name
, and text
.
- Type of the template
- Possible values:
action
,container
,component
,collection
,method
,publication
- The content of the template to be generated by the CLI.
Internally, this template will be evaluated by lodash's template function to
dynamically insert variables. You need to pass variable names surrounded
by <%=
and %>
.
If you pass insufficient variable names, the CLI will throw you an error.
Variables needed for each templates are:
component
- componentName
container
- componentName
- componentFileName
method
- collectionName
- methodFileName
publication
- publicationFileName
- collectionName
e.g.
Generate stories for Kadira Storybooks with generation of a new component.
storybook: true
- From
0.4.0
,mantra-cli.yml
was added. If you are upgrading from0.3.x
, simply createmantra-cli.yml
file in your project root and start customizing following the documentation above.
- Clone this repository and run
npm install
. - Write your code under
/lib
. npm run-script compile
compiles your ES2015 code in/lib
into/dist
.npm test
compiles the code and runs the tests.
MIT