@anansi/generator-js
Version:
Generate Fast React Web Apps
41 lines • 9.58 kB
JavaScript
import { BetterGenerator, resolvePath } from '../utils.js';
export default class extends BetterGenerator {
props;
constructor(args, options, features) {
super(args, options, features);
this.config.set('badges', '');
this.config.set('spa', true);
}
async initializing() {
this.composeWith(await resolvePath('../webpack', import.meta.url), this.options);
if (this.config.get('features')?.includes('SSR')) {
this.composeWith(await resolvePath('../ssr', import.meta.url), this.options);
}
if (this.options.branded) {
this.composeWith(await resolvePath('../anansi-splash', import.meta.url), this.options);
}
}
configuring() {
this.packageJson.merge(this.fs.readJSONTpl(this.templatePath('package.json.tpl')));
this.fs.extendJSONTpl(this.templatePath('tsconfig.json'), this.destinationPath('tsconfig.json'));
this.fs.copyTpl(this.templatePath('eslint.config.mjs'), this.destinationPath('eslint.config.mjs'), this.config.getAll());
this.fs.extendJSONTpl(this.templatePath('.vscode/launch.json'), this.destinationPath('.vscode/launch.json'));
this.fs.extendJSONTpl(this.templatePath('.vscode/tasks.json'), this.destinationPath('.vscode/tasks.json'));
}
async writingDependencies() {
await Promise.all([this.addDevDependencies(['@types/react', '@types/react-dom', '@data-client/test', 'react-refresh']), await this.addDependencies(['@anansi/router', '@data-client/react', '@data-client/rest', 'react', 'react-dom', '@data-client/img', 'history', 'core-js'])]);
}
writing() {
this.fs.copyTpl(this.templatePath('src/**'), this.destinationPath(this.config.get('rootPath')), this.config.getAll(), {
globOptions: {
dot: true
}
});
this.fs.copyTpl(this.templatePath('README.md'), this.destinationPath('README.md'), this.config.getAll());
if (this.config.get('features')?.includes('SSR')) {
// We don't use RootProvider in SSR config
this.fs.delete(this.destinationPath(this.config.get('rootPath'), 'RootProvider.tsx'));
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCZXR0ZXJHZW5lcmF0b3IiLCJyZXNvbHZlUGF0aCIsInByb3BzIiwiY29uc3RydWN0b3IiLCJhcmdzIiwib3B0aW9ucyIsImZlYXR1cmVzIiwiY29uZmlnIiwic2V0IiwiaW5pdGlhbGl6aW5nIiwiY29tcG9zZVdpdGgiLCJpbXBvcnQiLCJtZXRhIiwidXJsIiwiZ2V0IiwiaW5jbHVkZXMiLCJicmFuZGVkIiwiY29uZmlndXJpbmciLCJwYWNrYWdlSnNvbiIsIm1lcmdlIiwiZnMiLCJyZWFkSlNPTlRwbCIsInRlbXBsYXRlUGF0aCIsImV4dGVuZEpTT05UcGwiLCJkZXN0aW5hdGlvblBhdGgiLCJjb3B5VHBsIiwiZ2V0QWxsIiwid3JpdGluZ0RlcGVuZGVuY2llcyIsIlByb21pc2UiLCJhbGwiLCJhZGREZXZEZXBlbmRlbmNpZXMiLCJhZGREZXBlbmRlbmNpZXMiLCJ3cml0aW5nIiwiZ2xvYk9wdGlvbnMiLCJkb3QiLCJkZWxldGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BhL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VGZWF0dXJlcywgQmFzZU9wdGlvbnMgfSBmcm9tICd5ZW9tYW4tZ2VuZXJhdG9yJztcblxuaW1wb3J0IHsgQmV0dGVyR2VuZXJhdG9yLCByZXNvbHZlUGF0aCB9IGZyb20gJy4uL3V0aWxzLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBCZXR0ZXJHZW5lcmF0b3Ige1xuICBwcm9wcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYXJnczogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgb3B0aW9uczogQmFzZU9wdGlvbnMsXG4gICAgZmVhdHVyZXM6IEJhc2VGZWF0dXJlcyxcbiAgKSB7XG4gICAgc3VwZXIoYXJncywgb3B0aW9ucywgZmVhdHVyZXMpO1xuICAgIHRoaXMuY29uZmlnLnNldCgnYmFkZ2VzJywgJycpO1xuICAgIHRoaXMuY29uZmlnLnNldCgnc3BhJywgdHJ1ZSk7XG4gIH1cblxuICBhc3luYyBpbml0aWFsaXppbmcoKSB7XG4gICAgdGhpcy5jb21wb3NlV2l0aChcbiAgICAgIGF3YWl0IHJlc29sdmVQYXRoKCcuLi93ZWJwYWNrJywgaW1wb3J0Lm1ldGEudXJsKSxcbiAgICAgIHRoaXMub3B0aW9ucyxcbiAgICApO1xuICAgIGlmICh0aGlzLmNvbmZpZy5nZXQoJ2ZlYXR1cmVzJyk/LmluY2x1ZGVzKCdTU1InKSkge1xuICAgICAgdGhpcy5jb21wb3NlV2l0aChcbiAgICAgICAgYXdhaXQgcmVzb2x2ZVBhdGgoJy4uL3NzcicsIGltcG9ydC5tZXRhLnVybCksXG4gICAgICAgIHRoaXMub3B0aW9ucyxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICgodGhpcy5vcHRpb25zIGFzIGFueSkuYnJhbmRlZCkge1xuICAgICAgdGhpcy5jb21wb3NlV2l0aChcbiAgICAgICAgYXdhaXQgcmVzb2x2ZVBhdGgoJy4uL2FuYW5zaS1zcGxhc2gnLCBpbXBvcnQubWV0YS51cmwpLFxuICAgICAgICB0aGlzLm9wdGlvbnMsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpZ3VyaW5nKCkge1xuICAgIHRoaXMucGFja2FnZUpzb24ubWVyZ2UoXG4gICAgICB0aGlzLmZzLnJlYWRKU09OVHBsKHRoaXMudGVtcGxhdGVQYXRoKCdwYWNrYWdlLmpzb24udHBsJykpLFxuICAgICk7XG4gICAgdGhpcy5mcy5leHRlbmRKU09OVHBsKFxuICAgICAgdGhpcy50ZW1wbGF0ZVBhdGgoJ3RzY29uZmlnLmpzb24nKSxcbiAgICAgIHRoaXMuZGVzdGluYXRpb25QYXRoKCd0c2NvbmZpZy5qc29uJyksXG4gICAgKTtcbiAgICB0aGlzLmZzLmNvcHlUcGwoXG4gICAgICB0aGlzLnRlbXBsYXRlUGF0aCgnZXNsaW50LmNvbmZpZy5tanMnKSxcbiAgICAgIHRoaXMuZGVzdGluYXRpb25QYXRoKCdlc2xpbnQuY29uZmlnLm1qcycpLFxuICAgICAgdGhpcy5jb25maWcuZ2V0QWxsKCksXG4gICAgKTtcbiAgICB0aGlzLmZzLmV4dGVuZEpTT05UcGwoXG4gICAgICB0aGlzLnRlbXBsYXRlUGF0aCgnLnZzY29kZS9sYXVuY2guanNvbicpLFxuICAgICAgdGhpcy5kZXN0aW5hdGlvblBhdGgoJy52c2NvZGUvbGF1bmNoLmpzb24nKSxcbiAgICApO1xuICAgIHRoaXMuZnMuZXh0ZW5kSlNPTlRwbChcbiAgICAgIHRoaXMudGVtcGxhdGVQYXRoKCcudnNjb2RlL3Rhc2tzLmpzb24nKSxcbiAgICAgIHRoaXMuZGVzdGluYXRpb25QYXRoKCcudnNjb2RlL3Rhc2tzLmpzb24nKSxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgd3JpdGluZ0RlcGVuZGVuY2llcygpIHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmFkZERldkRlcGVuZGVuY2llcyhbXG4gICAgICAgICdAdHlwZXMvcmVhY3QnLFxuICAgICAgICAnQHR5cGVzL3JlYWN0LWRvbScsXG4gICAgICAgICdAZGF0YS1jbGllbnQvdGVzdCcsXG4gICAgICAgICdyZWFjdC1yZWZyZXNoJyxcbiAgICAgIF0pLFxuICAgICAgYXdhaXQgdGhpcy5hZGREZXBlbmRlbmNpZXMoW1xuICAgICAgICAnQGFuYW5zaS9yb3V0ZXInLFxuICAgICAgICAnQGRhdGEtY2xpZW50L3JlYWN0JyxcbiAgICAgICAgJ0BkYXRhLWNsaWVudC9yZXN0JyxcbiAgICAgICAgJ3JlYWN0JyxcbiAgICAgICAgJ3JlYWN0LWRvbScsXG4gICAgICAgICdAZGF0YS1jbGllbnQvaW1nJyxcbiAgICAgICAgJ2hpc3RvcnknLFxuICAgICAgICAnY29yZS1qcycsXG4gICAgICBdKSxcbiAgICBdKTtcbiAgfVxuXG4gIHdyaXRpbmcoKSB7XG4gICAgdGhpcy5mcy5jb3B5VHBsKFxuICAgICAgdGhpcy50ZW1wbGF0ZVBhdGgoJ3NyYy8qKicpLFxuICAgICAgdGhpcy5kZXN0aW5hdGlvblBhdGgodGhpcy5jb25maWcuZ2V0KCdyb290UGF0aCcpKSxcbiAgICAgIHRoaXMuY29uZmlnLmdldEFsbCgpLFxuICAgICAgeyBnbG9iT3B0aW9uczogeyBkb3Q6IHRydWUgfSB9LFxuICAgICk7XG4gICAgdGhpcy5mcy5jb3B5VHBsKFxuICAgICAgdGhpcy50ZW1wbGF0ZVBhdGgoJ1JFQURNRS5tZCcpLFxuICAgICAgdGhpcy5kZXN0aW5hdGlvblBhdGgoJ1JFQURNRS5tZCcpLFxuICAgICAgdGhpcy5jb25maWcuZ2V0QWxsKCksXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5nZXQoJ2ZlYXR1cmVzJyk/LmluY2x1ZGVzKCdTU1InKSkge1xuICAgICAgLy8gV2UgZG9uJ3QgdXNlIFJvb3RQcm92aWRlciBpbiBTU1IgY29uZmlnXG4gICAgICB0aGlzLmZzLmRlbGV0ZShcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvblBhdGgodGhpcy5jb25maWcuZ2V0KCdyb290UGF0aCcpLCAnUm9vdFByb3ZpZGVyLnRzeCcpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBRUEsU0FBU0EsZUFBZSxFQUFFQyxXQUFXLFFBQVEsYUFBYTtBQUUxRCxlQUFlLGNBQWNELGVBQWUsQ0FBQztFQUMzQ0UsS0FBSztFQUVMQyxXQUFXQSxDQUNUQyxJQUF1QixFQUN2QkMsT0FBb0IsRUFDcEJDLFFBQXNCLEVBQ3RCO0lBQ0EsS0FBSyxDQUFDRixJQUFJLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxDQUFDO0lBQzlCLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUM3QixJQUFJLENBQUNELE1BQU0sQ0FBQ0MsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7RUFDOUI7RUFFQSxNQUFNQyxZQUFZQSxDQUFBLEVBQUc7SUFDbkIsSUFBSSxDQUFDQyxXQUFXLENBQ2QsTUFBTVQsV0FBVyxDQUFDLFlBQVksRUFBRVUsTUFBTSxDQUFDQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxFQUNoRCxJQUFJLENBQUNSLE9BQ1AsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDRSxNQUFNLENBQUNPLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO01BQ2hELElBQUksQ0FBQ0wsV0FBVyxDQUNkLE1BQU1ULFdBQVcsQ0FBQyxRQUFRLEVBQUVVLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDQyxHQUFHLENBQUMsRUFDNUMsSUFBSSxDQUFDUixPQUNQLENBQUM7SUFDSDtJQUNBLElBQUssSUFBSSxDQUFDQSxPQUFPLENBQVNXLE9BQU8sRUFBRTtNQUNqQyxJQUFJLENBQUNOLFdBQVcsQ0FDZCxNQUFNVCxXQUFXLENBQUMsa0JBQWtCLEVBQUVVLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDQyxHQUFHLENBQUMsRUFDdEQsSUFBSSxDQUFDUixPQUNQLENBQUM7SUFDSDtFQUNGO0VBRUFZLFdBQVdBLENBQUEsRUFBRztJQUNaLElBQUksQ0FBQ0MsV0FBVyxDQUFDQyxLQUFLLENBQ3BCLElBQUksQ0FBQ0MsRUFBRSxDQUFDQyxXQUFXLENBQUMsSUFBSSxDQUFDQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FDM0QsQ0FBQztJQUNELElBQUksQ0FBQ0YsRUFBRSxDQUFDRyxhQUFhLENBQ25CLElBQUksQ0FBQ0QsWUFBWSxDQUFDLGVBQWUsQ0FBQyxFQUNsQyxJQUFJLENBQUNFLGVBQWUsQ0FBQyxlQUFlLENBQ3RDLENBQUM7SUFDRCxJQUFJLENBQUNKLEVBQUUsQ0FBQ0ssT0FBTyxDQUNiLElBQUksQ0FBQ0gsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEVBQ3RDLElBQUksQ0FBQ0UsZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQ3pDLElBQUksQ0FBQ2pCLE1BQU0sQ0FBQ21CLE1BQU0sQ0FBQyxDQUNyQixDQUFDO0lBQ0QsSUFBSSxDQUFDTixFQUFFLENBQUNHLGFBQWEsQ0FDbkIsSUFBSSxDQUFDRCxZQUFZLENBQUMscUJBQXFCLENBQUMsRUFDeEMsSUFBSSxDQUFDRSxlQUFlLENBQUMscUJBQXFCLENBQzVDLENBQUM7SUFDRCxJQUFJLENBQUNKLEVBQUUsQ0FBQ0csYUFBYSxDQUNuQixJQUFJLENBQUNELFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxFQUN2QyxJQUFJLENBQUNFLGVBQWUsQ0FBQyxvQkFBb0IsQ0FDM0MsQ0FBQztFQUNIO0VBRUEsTUFBTUcsbUJBQW1CQSxDQUFBLEVBQUc7SUFDMUIsTUFBTUMsT0FBTyxDQUFDQyxHQUFHLENBQUMsQ0FDaEIsSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQyxDQUN0QixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixlQUFlLENBQ2hCLENBQUMsRUFDRixNQUFNLElBQUksQ0FBQ0MsZUFBZSxDQUFDLENBQ3pCLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxTQUFTLENBQ1YsQ0FBQyxDQUNILENBQUM7RUFDSjtFQUVBQyxPQUFPQSxDQUFBLEVBQUc7SUFDUixJQUFJLENBQUNaLEVBQUUsQ0FBQ0ssT0FBTyxDQUNiLElBQUksQ0FBQ0gsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUMzQixJQUFJLENBQUNFLGVBQWUsQ0FBQyxJQUFJLENBQUNqQixNQUFNLENBQUNPLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUNqRCxJQUFJLENBQUNQLE1BQU0sQ0FBQ21CLE1BQU0sQ0FBQyxDQUFDLEVBQ3BCO01BQUVPLFdBQVcsRUFBRTtRQUFFQyxHQUFHLEVBQUU7TUFBSztJQUFFLENBQy9CLENBQUM7SUFDRCxJQUFJLENBQUNkLEVBQUUsQ0FBQ0ssT0FBTyxDQUNiLElBQUksQ0FBQ0gsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUM5QixJQUFJLENBQUNFLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFDakMsSUFBSSxDQUFDakIsTUFBTSxDQUFDbUIsTUFBTSxDQUFDLENBQ3JCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQ25CLE1BQU0sQ0FBQ08sR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7TUFDaEQ7TUFDQSxJQUFJLENBQUNLLEVBQUUsQ0FBQ2UsTUFBTSxDQUNaLElBQUksQ0FBQ1gsZUFBZSxDQUFDLElBQUksQ0FBQ2pCLE1BQU0sQ0FBQ08sR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLGtCQUFrQixDQUN0RSxDQUFDO0lBQ0g7RUFDRjtBQUNGIiwiaWdub3JlTGlzdCI6W119