granturismo v1.14.0
Granturismo

Generator Tool.
Workflow tool for scaffolding projects.
The streaming scaffold system.
It is easy to learn and easy to use, more efficient.
If you want to use a scaffold, the scaffold should be adapted to gt, but it is much more simpler than yeoman.
Scaffolds
- vivaxy/gt-react-scaffold webpack, babel, react, redux, router...
- vivaxy/gt-front-end-scaffold webpack, babel, eslint...
- vivaxy/gt-node-server nodejs server
- vivaxy/gt-npm-package npm package
Installation
Make sure your git version >= 2.7.0
Make sure you have installed nodejs
npm i -g granturismo
Usage
gt
gt help
gt init
gt config list
gt config add scaffold-name git-repo
gt config remove scaffold-name
How to Scaffold Using GT?
Implement scripts/gt.js, adding project info into user config.
If scripts/gt.js, all files will be copied by default.
See Scaffolds for examples.
gt.js
If you want to use es6 in gt.js, please use babel-register or babel-built js.
// using `babel-register`
if (!global._babelPolyfill) {
require('babel-polyfill');
}
require('babel-register');
module.exports = require('./gt/index');GT cli invokes methods in scaffold/scripts/gt.js, and passing options into init.
// gt.js
/**
* `ask` will be invoked first
* prompt questions
* `config` returned will be passed into `init` and `after` by `options.config`
*/,
export const ask = async(options) => {
return config;
};
export const init = async(options) => {
};
export const after = async(options) => {
};// options
{
project: {
folder: '/absolute/path/to/project/folder',
name: 'project-name', // same as project folder name
git: {
repositoryURL: 'git://git-url', // mainly used for package.json repository.url
username: 'vivaxy', // git configured username
},
},
scaffold: {
folder: '/absolute/path/to/scaffold/folder', // mostly ~/.gt/scaffold-name
name: 'scaffold-name',
git: {
headHash: '23c5742ac306e561554d1cfa56b1618d30d16157',
},
},
presets: {
copyFiles: async() => {},
writeFile: async() => {},
updateFile: async() => {},
writeJson: async() => {},
updateJson: async() => {},
removeFiles: async() => {},
addScaffoldInfo: async() => {},
},
}/**
* listr context
* do not modify existing attributes
* if you want to passing variables in listr context, add a new attribute
*/
{
selectedScaffoldName,
selectedScaffoldRepo,
selectedScaffoldFolder,
projectGT: {}, // js object required from `./scripts/gt.js`
GTInfo: {}, // options
}Presets
copyFiles(fileList)
fileList Array[String]is an array containing filename your want to copy.
eg.
const copyFiles = async() => {
const { presets } = options;
const files = [
`docs`,
`mock-server`,
`source`,
`.babelrc`,
`.editorconfig`,
`.gitignore`,
`LICENSE`,
`webpack.config.js`,
];
await presets.copyFiles(files);
};writeFile(file, content)
file {String}content {String}
Write string into file under project folder.
updateFile(file, filter)
file {String}filter {Function} filter(input) => outputinput {String}output {String}
Read file from scaffold, passing into filter, write filter result into file under project folder.
updateFiles(files, filter)
files {Array[String]}filter {Function} filter(input) => outputinput {String}output {String}
Read file from scaffold, passing into filter, write filter result into file under project folder.
writeJson(file, json)
file {String}json {Object}
Same as writeFile, but passing json object into second parameter.
updateJson(file, filter)
file {String}filter {Function} filter(input) => outputinput {Object}output {Object}
Same as updateFile, but passing json object into filter.
removeFiles(fileList)
fileList Array[String]is an array containing filename your want to copy.
Same as copyFiles, but remove files in project folder.
addScaffoldInfo({ scaffoldCommitHash, scaffoldVersion })
scaffoldCommitHash {String}default:'scaffoldCommitHash'scaffoldVersion {String}default:'scaffoldVersion'
Update the project package.json file, add scaffoldCommitHash and scaffoldVersion.
Use scaffoldCommitHash and scaffoldVersion as package.json key.
If scaffoldCommitHash or scaffoldVersion is falsy`, it will not add this key.
How to test a scaffold project?
- Checkout a new branch, update your
gt.js. - Use
gt config add test-scaffold-name git-repo#new-branch-nameto set a test registry. gt initand selecttest-scaffold-nameto rungt.jsin your new branch to test.
Change Log
Contributing
Prior Art
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago