UNPKG

@anansi/generator-js

Version:
111 lines 16.9 kB
import { ConfigureGenerator } from '../app/index.js'; import { resolvePath } from '../utils.js'; export default class AnansiGenerator extends ConfigureGenerator { initializing() { super.initializing(); // default until testing is set this.config.set('testing', false); } async prompting() { const prompts = [{ type: 'checkbox', name: 'features', message: 'What features would you like to include? (can be added after generation)\n', choices: [{ name: 'storybook', value: 'storybook' }, { name: 'testing (Jest)', value: 'testing' }, { name: 'Continuous Integration', value: 'CI' }], default: ['SSR', 'testing', 'CI'], store: true }]; if (this.options.projectType === 'SPA') { prompts[0].choices.unshift({ name: 'Server Side Rendering', value: 'SSR' }); prompts[0].default.unshift('SSR'); } const props = await this.prompt(prompts); this.config.set('features', props.features); if (props.features.includes('CI')) { this.composeWith(await resolvePath('../circle', import.meta.url), this.options); if (this.options.projectType === 'SPA') { this.composeWith(await resolvePath('../github-actions', import.meta.url), this.options); } } if (props.features.includes('testing')) { this.composeWith(await resolvePath('../testing', import.meta.url), this.options); } if (this.options.projectType === 'SPA') { this.composeWith(await resolvePath('../spa', import.meta.url), this.options); } else { this.composeWith(await resolvePath('../library', import.meta.url), this.options); } if (props.features.includes('storybook')) { this.composeWith(await resolvePath('../storybook', import.meta.url), this.options); } return props; } async configuring() { this.composeWith(await resolvePath('../license', import.meta.url), { ...this.options, defaultLicense: 'BSD' }); const repository = `${this.config.get('githubDomain')}/${this.config.get('githubOrg')}/${this.config.get('appName')}`; const namespace = this.config.get('npmNamespace') ? `${this.config.get('npmNamespace')}/` : ''; const packageSettings = { name: `${namespace}${this.config.get('appName')}`, version: '0.0.1', description: `${this.config.get('appName')} - An Anansi project`, scripts: { lint: `eslint ${this.config.get('rootPath')} --quiet`, format: 'npm run lint --fix', 'test:type': 'tsc' }, repository: { type: 'git', url: `git+ssh://git@${repository}.git` }, bugs: { url: `https://${repository}/issues` }, homepage: `https://${repository}#readme`, keywords: ['anansi'], author: this.config.get('author'), browserslist: ['extends @anansi/browserslist-config'], prettier: { printWidth: 80, semi: true, singleQuote: true, arrowParens: 'avoid' }, stackblitz: { startCommand: 'yarn start' } }; this.packageJson.merge(packageSettings); this.fs.copyTpl(this.templatePath('**'), this.destinationRoot(), this.config.getAll(), {}, { globOptions: { dot: true } }); // set .gitignore to proper location this.fs.move(this.destinationPath('.gitignore.tpl'), this.destinationPath('.gitignore')); // set .yarnrc.yml to proper location this.fs.move(this.destinationPath('.yarnrc.yml.tpl'), this.destinationPath('.yarnrc.yml')); } async configuringLinterPackages() { await this.addPeers('@anansi/eslint-plugin', ['typescript', 'babel-plugin-root-import', 'webpack'], 'devDependencies'); await this.addDevDependencies(['@babel/core', '@anansi/babel-preset', '@anansi/eslint-plugin', '@anansi/browserslist-config', 'typescript', // for eslint 'globals']); await this.addDependencies(['@babel/runtime-corejs3']); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb25maWd1cmVHZW5lcmF0b3IiLCJyZXNvbHZlUGF0aCIsIkFuYW5zaUdlbmVyYXRvciIsImluaXRpYWxpemluZyIsImNvbmZpZyIsInNldCIsInByb21wdGluZyIsInByb21wdHMiLCJ0eXBlIiwibmFtZSIsIm1lc3NhZ2UiLCJjaG9pY2VzIiwidmFsdWUiLCJkZWZhdWx0Iiwic3RvcmUiLCJvcHRpb25zIiwicHJvamVjdFR5cGUiLCJ1bnNoaWZ0IiwicHJvcHMiLCJwcm9tcHQiLCJmZWF0dXJlcyIsImluY2x1ZGVzIiwiY29tcG9zZVdpdGgiLCJpbXBvcnQiLCJtZXRhIiwidXJsIiwiY29uZmlndXJpbmciLCJkZWZhdWx0TGljZW5zZSIsInJlcG9zaXRvcnkiLCJnZXQiLCJuYW1lc3BhY2UiLCJwYWNrYWdlU2V0dGluZ3MiLCJ2ZXJzaW9uIiwiZGVzY3JpcHRpb24iLCJzY3JpcHRzIiwibGludCIsImZvcm1hdCIsImJ1Z3MiLCJob21lcGFnZSIsImtleXdvcmRzIiwiYXV0aG9yIiwiYnJvd3NlcnNsaXN0IiwicHJldHRpZXIiLCJwcmludFdpZHRoIiwic2VtaSIsInNpbmdsZVF1b3RlIiwiYXJyb3dQYXJlbnMiLCJzdGFja2JsaXR6Iiwic3RhcnRDb21tYW5kIiwicGFja2FnZUpzb24iLCJtZXJnZSIsImZzIiwiY29weVRwbCIsInRlbXBsYXRlUGF0aCIsImRlc3RpbmF0aW9uUm9vdCIsImdldEFsbCIsImdsb2JPcHRpb25zIiwiZG90IiwibW92ZSIsImRlc3RpbmF0aW9uUGF0aCIsImNvbmZpZ3VyaW5nTGludGVyUGFja2FnZXMiLCJhZGRQZWVycyIsImFkZERldkRlcGVuZGVuY2llcyIsImFkZERlcGVuZGVuY2llcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ3VyZUdlbmVyYXRvciwgdHlwZSBDb25maWd1cmVPcHRpb25zIH0gZnJvbSAnLi4vYXBwL2luZGV4LmpzJztcbmltcG9ydCB7IHJlc29sdmVQYXRoIH0gZnJvbSAnLi4vdXRpbHMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBbmFuc2lHZW5lcmF0b3IgZXh0ZW5kcyBDb25maWd1cmVHZW5lcmF0b3I8QW5hbnNpT3B0aW9ucz4ge1xuICBpbml0aWFsaXppbmcoKSB7XG4gICAgc3VwZXIuaW5pdGlhbGl6aW5nKCk7XG4gICAgLy8gZGVmYXVsdCB1bnRpbCB0ZXN0aW5nIGlzIHNldFxuICAgIHRoaXMuY29uZmlnLnNldCgndGVzdGluZycsIGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIHByb21wdGluZygpIHtcbiAgICBjb25zdCBwcm9tcHRzID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICBuYW1lOiAnZmVhdHVyZXMnLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICdXaGF0IGZlYXR1cmVzIHdvdWxkIHlvdSBsaWtlIHRvIGluY2x1ZGU/IChjYW4gYmUgYWRkZWQgYWZ0ZXIgZ2VuZXJhdGlvbilcXG4nLFxuICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnc3Rvcnlib29rJywgdmFsdWU6ICdzdG9yeWJvb2snIH0sXG4gICAgICAgICAgeyBuYW1lOiAndGVzdGluZyAoSmVzdCknLCB2YWx1ZTogJ3Rlc3RpbmcnIH0sXG4gICAgICAgICAgeyBuYW1lOiAnQ29udGludW91cyBJbnRlZ3JhdGlvbicsIHZhbHVlOiAnQ0knIH0sXG4gICAgICAgIF0gYXMgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdLFxuICAgICAgICBkZWZhdWx0OiBbJ1NTUicsICd0ZXN0aW5nJywgJ0NJJ10gYXMgc3RyaW5nW10sXG4gICAgICAgIHN0b3JlOiB0cnVlLFxuICAgICAgfSxcbiAgICBdIGFzIGNvbnN0O1xuICAgIGlmICh0aGlzLm9wdGlvbnMucHJvamVjdFR5cGUgPT09ICdTUEEnKSB7XG4gICAgICBwcm9tcHRzWzBdLmNob2ljZXMudW5zaGlmdCh7XG4gICAgICAgIG5hbWU6ICdTZXJ2ZXIgU2lkZSBSZW5kZXJpbmcnLFxuICAgICAgICB2YWx1ZTogJ1NTUicsXG4gICAgICB9KTtcbiAgICAgIHByb21wdHNbMF0uZGVmYXVsdC51bnNoaWZ0KCdTU1InKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wcyA9IGF3YWl0IHRoaXMucHJvbXB0KHByb21wdHMpO1xuICAgIHRoaXMuY29uZmlnLnNldCgnZmVhdHVyZXMnLCBwcm9wcy5mZWF0dXJlcyk7XG5cbiAgICBpZiAocHJvcHMuZmVhdHVyZXMuaW5jbHVkZXMoJ0NJJykpIHtcbiAgICAgIHRoaXMuY29tcG9zZVdpdGgoXG4gICAgICAgIGF3YWl0IHJlc29sdmVQYXRoKCcuLi9jaXJjbGUnLCBpbXBvcnQubWV0YS51cmwpLFxuICAgICAgICB0aGlzLm9wdGlvbnMsXG4gICAgICApO1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wcm9qZWN0VHlwZSA9PT0gJ1NQQScpIHtcbiAgICAgICAgdGhpcy5jb21wb3NlV2l0aChcbiAgICAgICAgICBhd2FpdCByZXNvbHZlUGF0aCgnLi4vZ2l0aHViLWFjdGlvbnMnLCBpbXBvcnQubWV0YS51cmwpLFxuICAgICAgICAgIHRoaXMub3B0aW9ucyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzLmZlYXR1cmVzLmluY2x1ZGVzKCd0ZXN0aW5nJykpIHtcbiAgICAgIHRoaXMuY29tcG9zZVdpdGgoXG4gICAgICAgIGF3YWl0IHJlc29sdmVQYXRoKCcuLi90ZXN0aW5nJywgaW1wb3J0Lm1ldGEudXJsKSxcbiAgICAgICAgdGhpcy5vcHRpb25zLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5wcm9qZWN0VHlwZSA9PT0gJ1NQQScpIHtcbiAgICAgIHRoaXMuY29tcG9zZVdpdGgoXG4gICAgICAgIGF3YWl0IHJlc29sdmVQYXRoKCcuLi9zcGEnLCBpbXBvcnQubWV0YS51cmwpLFxuICAgICAgICB0aGlzLm9wdGlvbnMsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbXBvc2VXaXRoKFxuICAgICAgICBhd2FpdCByZXNvbHZlUGF0aCgnLi4vbGlicmFyeScsIGltcG9ydC5tZXRhLnVybCksXG4gICAgICAgIHRoaXMub3B0aW9ucyxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChwcm9wcy5mZWF0dXJlcy5pbmNsdWRlcygnc3Rvcnlib29rJykpIHtcbiAgICAgIHRoaXMuY29tcG9zZVdpdGgoXG4gICAgICAgIGF3YWl0IHJlc29sdmVQYXRoKCcuLi9zdG9yeWJvb2snLCBpbXBvcnQubWV0YS51cmwpLFxuICAgICAgICB0aGlzLm9wdGlvbnMsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcHM7XG4gIH1cblxuICBhc3luYyBjb25maWd1cmluZygpIHtcbiAgICB0aGlzLmNvbXBvc2VXaXRoKGF3YWl0IHJlc29sdmVQYXRoKCcuLi9saWNlbnNlJywgaW1wb3J0Lm1ldGEudXJsKSwge1xuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgZGVmYXVsdExpY2Vuc2U6ICdCU0QnLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVwb3NpdG9yeSA9IGAke3RoaXMuY29uZmlnLmdldCgnZ2l0aHViRG9tYWluJyl9LyR7dGhpcy5jb25maWcuZ2V0KFxuICAgICAgJ2dpdGh1Yk9yZycsXG4gICAgKX0vJHt0aGlzLmNvbmZpZy5nZXQoJ2FwcE5hbWUnKX1gO1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9XG4gICAgICB0aGlzLmNvbmZpZy5nZXQoJ25wbU5hbWVzcGFjZScpID9cbiAgICAgICAgYCR7dGhpcy5jb25maWcuZ2V0KCducG1OYW1lc3BhY2UnKX0vYFxuICAgICAgOiAnJztcbiAgICBjb25zdCBwYWNrYWdlU2V0dGluZ3MgPSB7XG4gICAgICBuYW1lOiBgJHtuYW1lc3BhY2V9JHt0aGlzLmNvbmZpZy5nZXQoJ2FwcE5hbWUnKX1gLFxuICAgICAgdmVyc2lvbjogJzAuMC4xJyxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHt0aGlzLmNvbmZpZy5nZXQoJ2FwcE5hbWUnKX0gLSBBbiBBbmFuc2kgcHJvamVjdGAsXG4gICAgICBzY3JpcHRzOiB7XG4gICAgICAgIGxpbnQ6IGBlc2xpbnQgJHt0aGlzLmNvbmZpZy5nZXQoJ3Jvb3RQYXRoJyl9IC0tcXVpZXRgLFxuICAgICAgICBmb3JtYXQ6ICducG0gcnVuIGxpbnQgLS1maXgnLFxuICAgICAgICAndGVzdDp0eXBlJzogJ3RzYycsXG4gICAgICB9LFxuICAgICAgcmVwb3NpdG9yeToge1xuICAgICAgICB0eXBlOiAnZ2l0JyxcbiAgICAgICAgdXJsOiBgZ2l0K3NzaDovL2dpdEAke3JlcG9zaXRvcnl9LmdpdGAsXG4gICAgICB9LFxuICAgICAgYnVnczoge1xuICAgICAgICB1cmw6IGBodHRwczovLyR7cmVwb3NpdG9yeX0vaXNzdWVzYCxcbiAgICAgIH0sXG4gICAgICBob21lcGFnZTogYGh0dHBzOi8vJHtyZXBvc2l0b3J5fSNyZWFkbWVgLFxuICAgICAga2V5d29yZHM6IFsnYW5hbnNpJ10sXG4gICAgICBhdXRob3I6IHRoaXMuY29uZmlnLmdldCgnYXV0aG9yJyksXG4gICAgICBicm93c2Vyc2xpc3Q6IFsnZXh0ZW5kcyBAYW5hbnNpL2Jyb3dzZXJzbGlzdC1jb25maWcnXSxcbiAgICAgIHByZXR0aWVyOiB7XG4gICAgICAgIHByaW50V2lkdGg6IDgwLFxuICAgICAgICBzZW1pOiB0cnVlLFxuICAgICAgICBzaW5nbGVRdW90ZTogdHJ1ZSxcbiAgICAgICAgYXJyb3dQYXJlbnM6ICdhdm9pZCcsXG4gICAgICB9LFxuICAgICAgc3RhY2tibGl0ejogeyBzdGFydENvbW1hbmQ6ICd5YXJuIHN0YXJ0JyB9LFxuICAgIH07XG4gICAgdGhpcy5wYWNrYWdlSnNvbi5tZXJnZShwYWNrYWdlU2V0dGluZ3MpO1xuXG4gICAgdGhpcy5mcy5jb3B5VHBsKFxuICAgICAgdGhpcy50ZW1wbGF0ZVBhdGgoJyoqJyksXG4gICAgICB0aGlzLmRlc3RpbmF0aW9uUm9vdCgpLFxuICAgICAgdGhpcy5jb25maWcuZ2V0QWxsKCksXG4gICAgICB7fSxcbiAgICAgIHsgZ2xvYk9wdGlvbnM6IHsgZG90OiB0cnVlIH0gfSxcbiAgICApO1xuICAgIC8vIHNldCAuZ2l0aWdub3JlIHRvIHByb3BlciBsb2NhdGlvblxuICAgIHRoaXMuZnMubW92ZShcbiAgICAgIHRoaXMuZGVzdGluYXRpb25QYXRoKCcuZ2l0aWdub3JlLnRwbCcpLFxuICAgICAgdGhpcy5kZXN0aW5hdGlvblBhdGgoJy5naXRpZ25vcmUnKSxcbiAgICApO1xuICAgIC8vIHNldCAueWFybnJjLnltbCB0byBwcm9wZXIgbG9jYXRpb25cbiAgICB0aGlzLmZzLm1vdmUoXG4gICAgICB0aGlzLmRlc3RpbmF0aW9uUGF0aCgnLnlhcm5yYy55bWwudHBsJyksXG4gICAgICB0aGlzLmRlc3RpbmF0aW9uUGF0aCgnLnlhcm5yYy55bWwnKSxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgY29uZmlndXJpbmdMaW50ZXJQYWNrYWdlcygpIHtcbiAgICBhd2FpdCB0aGlzLmFkZFBlZXJzKFxuICAgICAgJ0BhbmFuc2kvZXNsaW50LXBsdWdpbicsXG4gICAgICBbJ3R5cGVzY3JpcHQnLCAnYmFiZWwtcGx1Z2luLXJvb3QtaW1wb3J0JywgJ3dlYnBhY2snXSxcbiAgICAgICdkZXZEZXBlbmRlbmNpZXMnIGFzIGNvbnN0LFxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLmFkZERldkRlcGVuZGVuY2llcyhbXG4gICAgICAnQGJhYmVsL2NvcmUnLFxuICAgICAgJ0BhbmFuc2kvYmFiZWwtcHJlc2V0JyxcbiAgICAgICdAYW5hbnNpL2VzbGludC1wbHVnaW4nLFxuICAgICAgJ0BhbmFuc2kvYnJvd3NlcnNsaXN0LWNvbmZpZycsXG4gICAgICAndHlwZXNjcmlwdCcsXG4gICAgICAvLyBmb3IgZXNsaW50XG4gICAgICAnZ2xvYmFscycsXG4gICAgXSk7XG4gICAgYXdhaXQgdGhpcy5hZGREZXBlbmRlbmNpZXMoWydAYmFiZWwvcnVudGltZS1jb3JlanMzJ10pO1xuICB9XG59XG50eXBlIEFuYW5zaU9wdGlvbnMgPSBDb25maWd1cmVPcHRpb25zICYgeyBwcm9qZWN0VHlwZTogc3RyaW5nIH07XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGtCQUFrQixRQUErQixpQkFBaUI7QUFDM0UsU0FBU0MsV0FBVyxRQUFRLGFBQWE7QUFFekMsZUFBZSxNQUFNQyxlQUFlLFNBQVNGLGtCQUFrQixDQUFnQjtFQUM3RUcsWUFBWUEsQ0FBQSxFQUFHO0lBQ2IsS0FBSyxDQUFDQSxZQUFZLENBQUMsQ0FBQztJQUNwQjtJQUNBLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztFQUNuQztFQUVBLE1BQU1DLFNBQVNBLENBQUEsRUFBRztJQUNoQixNQUFNQyxPQUFPLEdBQUcsQ0FDZDtNQUNFQyxJQUFJLEVBQUUsVUFBVTtNQUNoQkMsSUFBSSxFQUFFLFVBQVU7TUFDaEJDLE9BQU8sRUFDTCw0RUFBNEU7TUFDOUVDLE9BQU8sRUFBRSxDQUNQO1FBQUVGLElBQUksRUFBRSxXQUFXO1FBQUVHLEtBQUssRUFBRTtNQUFZLENBQUMsRUFDekM7UUFBRUgsSUFBSSxFQUFFLGdCQUFnQjtRQUFFRyxLQUFLLEVBQUU7TUFBVSxDQUFDLEVBQzVDO1FBQUVILElBQUksRUFBRSx3QkFBd0I7UUFBRUcsS0FBSyxFQUFFO01BQUssQ0FBQyxDQUNYO01BQ3RDQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBYTtNQUM3Q0MsS0FBSyxFQUFFO0lBQ1QsQ0FBQyxDQUNPO0lBQ1YsSUFBSSxJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsV0FBVyxLQUFLLEtBQUssRUFBRTtNQUN0Q1QsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDSSxPQUFPLENBQUNNLE9BQU8sQ0FBQztRQUN6QlIsSUFBSSxFQUFFLHVCQUF1QjtRQUM3QkcsS0FBSyxFQUFFO01BQ1QsQ0FBQyxDQUFDO01BQ0ZMLE9BQU8sQ0FBQyxD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