@anansi/generator-js
Version:
Generate Fast React Web Apps
81 lines • 13.5 kB
JavaScript
import { execa } from 'execa';
import { BetterGenerator } from '../utils.js';
export default class WebpackGenerator extends BetterGenerator {
props;
constructor(args, options, features) {
super(args, options, features);
this.config.set('webpack', true);
}
async prompting() {
const prompts = [{
type: 'select',
name: 'style',
message: 'SCSS with CSS modules and Linaria can both be used for styling.\nWhich would you like in the generated example?',
default: 'linaria',
choices: [{
name: 'SASS/CSS modules',
value: 'sass'
}, {
name: 'Linaria (CSS-in-JS)',
value: 'linaria'
}],
store: true
}];
this.props = await this.prompt(prompts);
this.config.set('style', this?.props?.style);
await this.createCert();
}
async createCert() {
const cwd = this.destinationRoot();
try {
await execa(`mkcert localhost 127.0.0.1`, [], {
cwd,
shell: true
});
this.config.set('devssl', /*true*/false); //TODO: figure out how to make this actually work
} catch {
this.config.set('devssl', false);
}
}
configuring() {
this.packageJson.merge(this.fs.readJSONTpl(this.templatePath('package.json.tpl')));
// TODO: Remove once https://github.com/facebook/create-react-app/issues/11773 is fixed
this.packageJson.merge({
resolutions: {
'react-error-overlay': '6.0.9'
}
});
}
async writingDependencies() {
await this.addDevDependencies(['webpack', 'webpack-cli', 'webpack-dev-server', '@anansi/webpack-config']);
if (!this.config.get('features').includes('SSR')) {
await this.addDevDependencies(['serve']);
}
if (this?.props?.style === 'linaria') {
await this.addDevDependencies(['@linaria/core', '@linaria/react']);
if (this.config.get('features')?.includes?.('testing')) {
await this.addDevDependencies(['@wyw-in-js/babel-preset']);
}
} else if (this?.props?.style === 'sass') {
await this.addDevDependencies(['sass']);
}
}
writing() {
if (this?.props?.style === 'sass') {
this.fs.copyTpl(this.templatePath('src/style/**'), this.destinationPath(this.config.get('rootPath'), 'style'), this.config.getAll(), {
globOptions: {
dot: true
}
});
}
this.fs.copyTpl(this.templatePath('webpack.config.js'), this.destinationPath('webpack.config.js'), this.config.getAll());
this.fs.extendJSONTpl(this.templatePath('tsconfig.json'), this.destinationPath('tsconfig.json'));
this.fs.appendTpl(this.destinationPath('README.md'), this.fs.read(this.templatePath('README.md')), this.config.getAll());
this.fs.copy(this.templatePath('index.ejs'), this.destinationPath('index.ejs'));
if (this?.props?.style === 'linaria') {
this.fs.copyTpl(this.templatePath('.babelrc.js'), this.destinationPath('.babelrc.js'), this.config.getAll());
this.fs.appendTpl(this.destinationPath('.gitignore'), this.fs.read(this.templatePath('.gitignore.tpl')), this.config.getAll());
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGVjYSIsIkJldHRlckdlbmVyYXRvciIsIldlYnBhY2tHZW5lcmF0b3IiLCJwcm9wcyIsImNvbnN0cnVjdG9yIiwiYXJncyIsIm9wdGlvbnMiLCJmZWF0dXJlcyIsImNvbmZpZyIsInNldCIsInByb21wdGluZyIsInByb21wdHMiLCJ0eXBlIiwibmFtZSIsIm1lc3NhZ2UiLCJkZWZhdWx0IiwiY2hvaWNlcyIsInZhbHVlIiwic3RvcmUiLCJwcm9tcHQiLCJzdHlsZSIsImNyZWF0ZUNlcnQiLCJjd2QiLCJkZXN0aW5hdGlvblJvb3QiLCJzaGVsbCIsImNvbmZpZ3VyaW5nIiwicGFja2FnZUpzb24iLCJtZXJnZSIsImZzIiwicmVhZEpTT05UcGwiLCJ0ZW1wbGF0ZVBhdGgiLCJyZXNvbHV0aW9ucyIsIndyaXRpbmdEZXBlbmRlbmNpZXMiLCJhZGREZXZEZXBlbmRlbmNpZXMiLCJnZXQiLCJpbmNsdWRlcyIsIndyaXRpbmciLCJjb3B5VHBsIiwiZGVzdGluYXRpb25QYXRoIiwiZ2V0QWxsIiwiZ2xvYk9wdGlvbnMiLCJkb3QiLCJleHRlbmRKU09OVHBsIiwiYXBwZW5kVHBsIiwicmVhZCIsImNvcHkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvd2VicGFjay9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjYSB9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7IEJhc2VGZWF0dXJlcywgQmFzZU9wdGlvbnMgfSBmcm9tICd5ZW9tYW4tZ2VuZXJhdG9yJztcblxuaW1wb3J0IHsgQmV0dGVyR2VuZXJhdG9yIH0gZnJvbSAnLi4vdXRpbHMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXZWJwYWNrR2VuZXJhdG9yIGV4dGVuZHMgQmV0dGVyR2VuZXJhdG9yPFdlYnBhY2tPcHRpb25zPiB7XG4gIHByb3BzPzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhcmdzOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiBXZWJwYWNrT3B0aW9ucyxcbiAgICBmZWF0dXJlczogQmFzZUZlYXR1cmVzLFxuICApIHtcbiAgICBzdXBlcihhcmdzLCBvcHRpb25zLCBmZWF0dXJlcyk7XG4gICAgdGhpcy5jb25maWcuc2V0KCd3ZWJwYWNrJywgdHJ1ZSk7XG4gIH1cblxuICBhc3luYyBwcm9tcHRpbmcoKSB7XG4gICAgY29uc3QgcHJvbXB0czogYW55W10gPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzZWxlY3QnIGFzIGNvbnN0LFxuICAgICAgICBuYW1lOiAnc3R5bGUnLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICdTQ1NTIHdpdGggQ1NTIG1vZHVsZXMgYW5kIExpbmFyaWEgY2FuIGJvdGggYmUgdXNlZCBmb3Igc3R5bGluZy5cXG5XaGljaCB3b3VsZCB5b3UgbGlrZSBpbiB0aGUgZ2VuZXJhdGVkIGV4YW1wbGU/JyxcbiAgICAgICAgZGVmYXVsdDogJ2xpbmFyaWEnLFxuICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1NBU1MvQ1NTIG1vZHVsZXMnLFxuICAgICAgICAgICAgdmFsdWU6ICdzYXNzJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdMaW5hcmlhIChDU1MtaW4tSlMpJyxcbiAgICAgICAgICAgIHZhbHVlOiAnbGluYXJpYScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3RvcmU6IHRydWUsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICB0aGlzLnByb3BzID0gYXdhaXQgdGhpcy5wcm9tcHQocHJvbXB0cyk7XG4gICAgdGhpcy5jb25maWcuc2V0KCdzdHlsZScsIHRoaXM/LnByb3BzPy5zdHlsZSk7XG5cbiAgICBhd2FpdCB0aGlzLmNyZWF0ZUNlcnQoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUNlcnQoKSB7XG4gICAgY29uc3QgY3dkID0gdGhpcy5kZXN0aW5hdGlvblJvb3QoKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY2EoYG1rY2VydCBsb2NhbGhvc3QgMTI3LjAuMC4xYCwgW10sIHtcbiAgICAgICAgY3dkLFxuICAgICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb25maWcuc2V0KCdkZXZzc2wnLCAvKnRydWUqLyBmYWxzZSk7IC8vVE9ETzogZmlndXJlIG91dCBob3cgdG8gbWFrZSB0aGlzIGFjdHVhbGx5IHdvcmtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuY29uZmlnLnNldCgnZGV2c3NsJywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpZ3VyaW5nKCkge1xuICAgIHRoaXMucGFja2FnZUpzb24ubWVyZ2UoXG4gICAgICB0aGlzLmZzLnJlYWRKU09OVHBsKHRoaXMudGVtcGxhdGVQYXRoKCdwYWNrYWdlLmpzb24udHBsJykpLFxuICAgICk7XG4gICAgLy8gVE9ETzogUmVtb3ZlIG9uY2UgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2NyZWF0ZS1yZWFjdC1hcHAvaXNzdWVzLzExNzczIGlzIGZpeGVkXG4gICAgdGhpcy5wYWNrYWdlSnNvbi5tZXJnZSh7XG4gICAgICByZXNvbHV0aW9uczoge1xuICAgICAgICAncmVhY3QtZXJyb3Itb3ZlcmxheSc6ICc2LjAuOScsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgd3JpdGluZ0RlcGVuZGVuY2llcygpIHtcbiAgICBhd2FpdCB0aGlzLmFkZERldkRlcGVuZGVuY2llcyhbXG4gICAgICAnd2VicGFjaycsXG4gICAgICAnd2VicGFjay1jbGknLFxuICAgICAgJ3dlYnBhY2stZGV2LXNlcnZlcicsXG4gICAgICAnQGFuYW5zaS93ZWJwYWNrLWNvbmZpZycsXG4gICAgXSk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5nZXQoJ2ZlYXR1cmVzJykuaW5jbHVkZXMoJ1NTUicpKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkZERldkRlcGVuZGVuY2llcyhbJ3NlcnZlJ10pO1xuICAgIH1cbiAgICBpZiAodGhpcz8ucHJvcHM/LnN0eWxlID09PSAnbGluYXJpYScpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRkRGV2RGVwZW5kZW5jaWVzKFsnQGxpbmFyaWEvY29yZScsICdAbGluYXJpYS9yZWFjdCddKTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5nZXQoJ2ZlYXR1cmVzJyk/LmluY2x1ZGVzPy4oJ3Rlc3RpbmcnKSkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkZERldkRlcGVuZGVuY2llcyhbJ0B3eXctaW4tanMvYmFiZWwtcHJlc2V0J10pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcz8ucHJvcHM/LnN0eWxlID09PSAnc2FzcycpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRkRGV2RGVwZW5kZW5jaWVzKFsnc2FzcyddKTtcbiAgICB9XG4gIH1cblxuICB3cml0aW5nKCkge1xuICAgIGlmICh0aGlzPy5wcm9wcz8uc3R5bGUgPT09ICdzYXNzJykge1xuICAgICAgdGhpcy5mcy5jb3B5VHBsKFxuICAgICAgICB0aGlzLnRlbXBsYXRlUGF0aCgnc3JjL3N0eWxlLyoqJyksXG4gICAgICAgIHRoaXMuZGVzdGluYXRpb25QYXRoKHRoaXMuY29uZmlnLmdldCgncm9vdFBhdGgnKSwgJ3N0eWxlJyksXG4gICAgICAgIHRoaXMuY29uZmlnLmdldEFsbCgpLFxuICAgICAgICB7IGdsb2JPcHRpb25zOiB7IGRvdDogdHJ1ZSB9IH0sXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmZzLmNvcHlUcGwoXG4gICAgICB0aGlzLnRlbXBsYXRlUGF0aCgnd2VicGFjay5jb25maWcuanMnKSxcbiAgICAgIHRoaXMuZGVzdGluYXRpb25QYXRoKCd3ZWJwYWNrLmNvbmZpZy5qcycpLFxuICAgICAgdGhpcy5jb25maWcuZ2V0QWxsKCksXG4gICAgKTtcbiAgICB0aGlzLmZzLmV4dGVuZEpTT05UcGwoXG4gICAgICB0aGlzLnRlbXBsYXRlUGF0aCgndHNjb25maWcuanNvbicpLFxuICAgICAgdGhpcy5kZXN0aW5hdGlvblBhdGgoJ3RzY29uZmlnLmpzb24nKSxcbiAgICApO1xuICAgIHRoaXMuZnMuYXBwZW5kVHBsKFxuICAgICAgdGhpcy5kZXN0aW5hdGlvblBhdGgoJ1JFQURNRS5tZCcpLFxuICAgICAgdGhpcy5mcy5yZWFkKHRoaXMudGVtcGxhdGVQYXRoKCdSRUFETUUubWQnKSksXG4gICAgICB0aGlzLmNvbmZpZy5nZXRBbGwoKSxcbiAgICApO1xuICAgIHRoaXMuZnMuY29weShcbiAgICAgIHRoaXMudGVtcGxhdGVQYXRoKCdpbmRleC5lanMnKSxcbiAgICAgIHRoaXMuZGVzdGluYXRpb25QYXRoKCdpbmRleC5lanMnKSxcbiAgICApO1xuXG4gICAgaWYgKHRoaXM/LnByb3BzPy5zdHlsZSA9PT0gJ2xpbmFyaWEnKSB7XG4gICAgICB0aGlzLmZzLmNvcHlUcGwoXG4gICAgICAgIHRoaXMudGVtcGxhdGVQYXRoKCcuYmFiZWxyYy5qcycpLFxuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uUGF0aCgnLmJhYmVscmMuanMnKSxcbiAgICAgICAgdGhpcy5jb25maWcuZ2V0QWxsKCksXG4gICAgICApO1xuICAgICAgdGhpcy5mcy5hcHBlbmRUcGwoXG4gICAgICAgIHRoaXMuZGVzdGluYXRpb25QYXRoKCcuZ2l0aWdub3JlJyksXG4gICAgICAgIHRoaXMuZnMucmVhZCh0aGlzLnRlbXBsYXRlUGF0aCgnLmdpdGlnbm9yZS50cGwnKSksXG4gICAgICAgIHRoaXMuY29uZmlnLmdldEFsbCgpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxudHlwZSBXZWJwYWNrT3B0aW9ucyA9IEJhc2VPcHRpb25zO1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxLQUFLLFFBQVEsT0FBTztBQUc3QixTQUFTQyxlQUFlLFFBQVEsYUFBYTtBQUU3QyxlQUFlLE1BQU1DLGdCQUFnQixTQUFTRCxlQUFlLENBQWlCO0VBQzVFRSxLQUFLO0VBRUxDLFdBQVdBLENBQ1RDLElBQXVCLEVBQ3ZC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