generator-svalter
Version:
Generator to help you create and manage svelte/sapper application
93 lines (73 loc) • 2.84 kB
JavaScript
'use strict';
module.exports = class Configurator {
saveConfigurationsFromInputs(generator) {
generator.config.set('project-type', this._getProjectType(generator));
generator.config.set('project-name', this._getProjectName(generator));
generator.config.set('support-preprocessors', this._getSupportPreprocessors(generator));
generator.config.set('css-reset', this._getCSSReset(generator));
}
_getProjectType(generator) {
if (generator.options.svelte) {
return 'svelte';
}
if (generator.options.sapper) {
return 'sapper';
}
if (generator.options.library) {
return 'library';
}
return generator.answers['project-type'];
}
_getProjectName(generator) {
if (generator.options.appname) {
return generator.options.appname;
}
return generator.answers['project-name'];
}
_getSupportTypeScript(generator) {
if (generator.options.typescript != null) {
return generator.options.typescript;
}
return generator.answers['support-typescript'];
}
_getSupportPreprocessors(generator) {
const answs = generator.answers['support-preprocessors'];
const options = generator.options;
const supported = [];
if (options['typescript'] === true || (answs != null && answs.includes('typescript'))) {
supported.push('typescript');
}
if (options['sass'] === true || (answs != null && answs.includes('sass'))) {
supported.push('sass');
}
if (options['style-separation'] === true || (answs != null && answs.includes('style-separation'))) {
supported.push('style-separation');
}
if (options['script-separation'] === true || (answs != null && answs.includes('script-separation'))) {
supported.push('script-separation');
}
return supported;
}
_getCSSReset(generator) {
if (!this._supportsCssReset(generator)) {
return 'none';
}
let opt = generator.options['css-reset'];
if (opt != null) {
opt = opt.toLowerCase();
if (opt === 'meyer_reset' || opt === 'normalize' || opt === 'sanitize') {
return opt;
}
return 'none';
}
return generator.answers['css-reset'];
}
_supportsCssReset(generator) {
return (
generator.options['sapper'] === true ||
generator.options['svelte'] === true ||
'sapper' === generator.answers['project-type'] ||
'svelte' === generator.answers['project-type']
);
}
};