@anansi/generator-js
Version:
Generate Fast React Web Apps
83 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 = [
// TODO: actually do something with this
{
type: 'list',
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 (e) {
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.templatePath('README.md'), this.destinationPath('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.templatePath('.gitignore.tpl'), this.destinationPath('.gitignore'), this.config.getAll());
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGVjYSIsIkJldHRlckdlbmVyYXRvciIsIldlYnBhY2tHZW5lcmF0b3IiLCJwcm9wcyIsImNvbnN0cnVjdG9yIiwiYXJncyIsIm9wdGlvbnMiLCJmZWF0dXJlcyIsImNvbmZpZyIsInNldCIsInByb21wdGluZyIsInByb21wdHMiLCJ0eXBlIiwibmFtZSIsIm1lc3NhZ2UiLCJkZWZhdWx0IiwiY2hvaWNlcyIsInZhbHVlIiwic3RvcmUiLCJwcm9tcHQiLCJzdHlsZSIsImNyZWF0ZUNlcnQiLCJjd2QiLCJkZXN0aW5hdGlvblJvb3QiLCJzaGVsbCIsImUiLCJjb25maWd1cmluZyIsInBhY2thZ2VKc29uIiwibWVyZ2UiLCJmcyIsInJlYWRKU09OVHBsIiwidGVtcGxhdGVQYXRoIiwicmVzb2x1dGlvbnMiLCJ3cml0aW5nRGVwZW5kZW5jaWVzIiwiYWRkRGV2RGVwZW5kZW5jaWVzIiwiZ2V0IiwiaW5jbHVkZXMiLCJ3cml0aW5nIiwiY29weVRwbCIsImRlc3RpbmF0aW9uUGF0aCIsImdldEFsbCIsImdsb2JPcHRpb25zIiwiZG90IiwiZXh0ZW5kSlNPTlRwbCIsImFwcGVuZFRwbCIsImNvcHkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvd2VicGFjay9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjYSB9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7IEJhc2VGZWF0dXJlcywgQmFzZU9wdGlvbnMgfSBmcm9tICd5ZW9tYW4tZ2VuZXJhdG9yJztcblxuaW1wb3J0IHsgQmV0dGVyR2VuZXJhdG9yIH0gZnJvbSAnLi4vdXRpbHMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXZWJwYWNrR2VuZXJhdG9yIGV4dGVuZHMgQmV0dGVyR2VuZXJhdG9yPFdlYnBhY2tPcHRpb25zPiB7XG4gIHByb3BzPzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhcmdzOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiBXZWJwYWNrT3B0aW9ucyxcbiAgICBmZWF0dXJlczogQmFzZUZlYXR1cmVzLFxuICApIHtcbiAgICBzdXBlcihhcmdzLCBvcHRpb25zLCBmZWF0dXJlcyk7XG4gICAgdGhpcy5jb25maWcuc2V0KCd3ZWJwYWNrJywgdHJ1ZSk7XG4gIH1cblxuICBhc3luYyBwcm9tcHRpbmcoKSB7XG4gICAgY29uc3QgcHJvbXB0cyA9IFtcbiAgICAgIC8vIFRPRE86IGFjdHVhbGx5IGRvIHNvbWV0aGluZyB3aXRoIHRoaXNcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpc3QnLFxuICAgICAgICBuYW1lOiAnc3R5bGUnLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICdTQ1NTIHdpdGggQ1NTIG1vZHVsZXMgYW5kIExpbmFyaWEgY2FuIGJvdGggYmUgdXNlZCBmb3Igc3R5bGluZy5cXG5XaGljaCB3b3VsZCB5b3UgbGlrZSBpbiB0aGUgZ2VuZXJhdGVkIGV4YW1wbGU/JyxcbiAgICAgICAgZGVmYXVsdDogJ2xpbmFyaWEnLFxuICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1NBU1MvQ1NTIG1vZHVsZXMnLFxuICAgICAgICAgICAgdmFsdWU6ICdzYXNzJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdMaW5hcmlhIChDU1MtaW4tSlMpJyxcbiAgICAgICAgICAgIHZhbHVlOiAnbGluYXJpYScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3RvcmU6IHRydWUsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICB0aGlzLnByb3BzID0gYXdhaXQgdGhpcy5wcm9tcHQocHJvbXB0cyk7XG4gICAgdGhpcy5jb25maWcuc2V0KCdzdHlsZScsIHRoaXM/LnByb3BzPy5zdHlsZSk7XG5cbiAgICBhd2FpdCB0aGlzLmNyZWF0ZUNlcnQoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUNlcnQoKSB7XG4gICAgY29uc3QgY3dkID0gdGhpcy5kZXN0aW5hdGlvblJvb3QoKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY2EoYG1rY2VydCBsb2NhbGhvc3QgMTI3LjAuMC4xYCwgW10sIHtcbiAgICAgICAgY3dkLFxuICAgICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb25maWcuc2V0KCdkZXZzc2wnLCAvKnRydWUqLyBmYWxzZSk7IC8vVE9ETzogZmlndXJlIG91dCBob3cgdG8gbWFrZSB0aGlzIGFjdHVhbGx5IHdvcmtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmNvbmZpZy5zZXQoJ2RldnNzbCcsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBjb25maWd1cmluZygpIHtcbiAgICB0aGlzLnBhY2thZ2VKc29uLm1lcmdlKFxuICAgICAgdGhpcy5mcy5yZWFkSlNPTlRwbCh0aGlzLnRlbXBsYXRlUGF0aCgncGFja2FnZS5qc29uLnRwbCcpKSxcbiAgICApO1xuICAgIC8vIFRPRE86IFJlbW92ZSBvbmNlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9jcmVhdGUtcmVhY3QtYXBwL2lzc3Vlcy8xMTc3MyBpcyBmaXhlZFxuICAgIHRoaXMucGFja2FnZUpzb24ubWVyZ2Uoe1xuICAgICAgcmVzb2x1dGlvbnM6IHtcbiAgICAgICAgJ3JlYWN0LWVycm9yLW92ZXJsYXknOiAnNi4wLjknLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHdyaXRpbmdEZXBlbmRlbmNpZXMoKSB7XG4gICAgYXdhaXQgdGhpcy5hZGREZXZEZXBlbmRlbmNpZXMoW1xuICAgICAgJ3dlYnBhY2snLFxuICAgICAgJ3dlYnBhY2stY2xpJyxcbiAgICAgICd3ZWJwYWNrLWRldi1zZXJ2ZXInLFxuICAgICAgJ0BhbmFuc2kvd2VicGFjay1jb25maWcnLFxuICAgIF0pO1xuICAgIGlmICghdGhpcy5jb25maWcuZ2V0KCdmZWF0dXJlcycpLmluY2x1ZGVzKCdTU1InKSkge1xuICAgICAgYXdhaXQgdGhpcy5hZGREZXZEZXBlbmRlbmNpZXMoWydzZXJ2ZSddKTtcbiAgICB9XG4gICAgaWYgKHRoaXM/LnByb3BzPy5zdHlsZSA9PT0gJ2xpbmFyaWEnKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkZERldkRlcGVuZGVuY2llcyhbJ0BsaW5hcmlhL2NvcmUnLCAnQGxpbmFyaWEvcmVhY3QnXSk7XG4gICAgICBpZiAodGhpcy5jb25maWcuZ2V0KCdmZWF0dXJlcycpPy5pbmNsdWRlcz8uKCd0ZXN0aW5nJykpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGREZXZEZXBlbmRlbmNpZXMoWydAd3l3LWluLWpzL2JhYmVsLXByZXNldCddKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXM/LnByb3BzPy5zdHlsZSA9PT0gJ3Nhc3MnKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkZERldkRlcGVuZGVuY2llcyhbJ3Nhc3MnXSk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGluZygpIHtcbiAgICBpZiAodGhpcz8ucHJvcHM/LnN0eWxlID09PSAnc2FzcycpIHtcbiAgICAgIHRoaXMuZnMuY29weVRwbChcbiAgICAgICAgdGhpcy50ZW1wbGF0ZVBhdGgoJ3NyYy9zdHlsZS8qKicpLFxuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uUGF0aCh0aGlzLmNvbmZpZy5nZXQoJ3Jvb3RQYXRoJyksICdzdHlsZScpLFxuICAgICAgICB0aGlzLmNvbmZpZy5nZXRBbGwoKSxcbiAgICAgICAge30sXG4gICAgICAgIHsgZ2xvYk9wdGlvbnM6IHsgZG90OiB0cnVlIH0gfSxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZnMuY29weVRwbChcbiAgICAgIHRoaXMudGVtcGxhdGVQYXRoKCd3ZWJwYWNrLmNvbmZpZy5qcycpLFxuICAgICAgdGhpcy5kZXN0aW5hdGlvblBhdGgoJ3dlYnBhY2suY29uZmlnLmpzJyksXG4gICAgICB0aGlzLmNvbmZpZy5nZXRBbGwoKSxcbiAgICApO1xuICAgIHRoaXMuZnMuZXh0ZW5kSlNPTlRwbChcbiAgICAgIHRoaXMudGVtcGxhdGVQYXRoKCd0c2NvbmZpZy5qc29uJyksXG4gICAgICB0aGlzLmRlc3RpbmF0aW9uUGF0aCgndHNjb25maWcuanNvbicpLFxuICAgICk7XG4gICAgdGhpcy5mcy5hcHBlbmRUcGwoXG4gICAgICB0aGlzLnRlbXBsYXRlUGF0aCgnUkVBRE1FLm1kJyksXG4gICAgICB0aGlzLmRlc3RpbmF0aW9uUGF0aCgnUkVBRE1FLm1kJyksXG4gICAgICB0aGlzLmNvbmZpZy5nZXRBbGwoKSxcbiAgICApO1xuICAgIHRoaXMuZnMuY29weShcbiAgICAgIHRoaXMudGVtcGxhdGVQYXRoKCdpbmRleC5lanMnKSxcbiAgICAgIHRoaXMuZGVzdGluYXRpb25QYXRoKCdpbmRleC5lanMnKSxcbiAgICApO1xuXG4gICAgaWYgKHRoaXM/LnByb3BzPy5zdHlsZSA9PT0gJ2xpbmFyaWEnKSB7XG4gICAgICB0aGlzLmZzLmNvcHlUcGwoXG4gICAgICAgIHRoaXMudGVtcGxhdGVQYXRoKCcuYmFiZWxyYy5qcycpLFxuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uUGF0aCgnLmJhYmVscmMuanMnKSxcbiAgICAgICAgdGhpcy5jb25maWcuZ2V0QWxsKCksXG4gICAgICApO1xuICAgICAgdGhpcy5mcy5hcHBlbmRUcGwoXG4gICAgICAgIHRoaXMudGVtcGxhdGVQYXRoKCcuZ2l0aWdub3JlLnRwbCcpLFxuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uUGF0aCgnLmdpdGlnbm9yZScpLFxuICAgICAgICB0aGlzLmNvbmZpZy5nZXRBbGwoKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbnR5cGUgV2VicGFja09wdGlvbnMgPSBCYXNlT3B0aW9ucztcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsS0FBSyxRQUFRLE9BQU87QUFHN0IsU0FBU0MsZUFBZSxRQUFRLGFBQWE7QUFFN0MsZUFBZSxNQUFNQyxnQkFBZ0IsU0FBU0QsZUFBZSxDQUFpQjtFQUM1RUUsS0FBSztFQUVMQyxXQUFXQSxD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