Finish Feature-stylelang-selection

This commit is contained in:
ColCh 2014-11-02 15:23:45 +03:00
commit 0601753a24
6 changed files with 82 additions and 0 deletions

View File

@ -32,7 +32,10 @@ var ReactWebpackGenerator = module.exports = function ReactWebpackGenerator(args
this.installDependencies({ skipInstall: options['skip-install'] });
});
this.pkg = JSON.parse(this.readFileAsString(path.join(__dirname, '../package.json')));
this.config.save();
};
util.inherits(ReactWebpackGenerator, yeoman.generators.Base);
@ -60,6 +63,25 @@ ReactWebpackGenerator.prototype.askForReactRouter = function () {
}.bind(this));
};
ReactWebpackGenerator.prototype.askForStylesLanguage = function () {
var done = this.async();
this.prompt({
type : 'list',
name : 'stylesLanguage',
message : 'Which styles language you want to use?',
choices: [
{name: 'CSS', value: 'css'},
{name: 'SASS', value: 'sass'},
{name: 'LESS', value: 'less'},
{name: 'Stylus', value: 'stylus'}
],
default : 'css'
}, function (props) {
this.config.set('styles-language', props.stylesLanguage);
done();
}.bind(this));
};
ReactWebpackGenerator.prototype.readIndex = function readIndex() {
this.indexFile = this.engine(this.read('../../templates/common/index.html'), this);
};

View File

@ -38,6 +38,18 @@ var Generator = module.exports = function Generator() {
this.stylesSuffix = '.css';
switch(this.config.get('styles-language')) {
case 'sass':
this.stylesSuffix = '.sass';
break;
case 'less':
this.stylesSuffix = '.less';
break;
case 'stylus':
this.stylesSuffix = '.styl';
break;
}
this.sourceRoot(path.join(__dirname, sourceRoot));
};

View File

@ -0,0 +1,3 @@
.<%= classedName %>{
border: 1px dashed #f00;
}

View File

@ -0,0 +1,2 @@
.<%= classedName %>
border: 1px dashed #f00

View File

@ -0,0 +1,2 @@
.<%= classedName %>
border 1px dashed #f00

View File

@ -48,6 +48,7 @@ describe('react-webpack generator', function() {
it('should generate dotfiles', function(done) {
react.run({}, function() {
helpers.assertFile([].concat(expected, [
'.yo-rc.json',
'.editorconfig',
'.gitignore',
'.jshintrc'
@ -110,6 +111,46 @@ describe('react-webpack generator', function() {
});
describe('Generator', function () {
it('should contain info about used style lang', function (done) {
react.run({}, function() {
assert.ok(react.config.get('styles-language'));
done();
});
});
it('by default should use css style lang', function (done) {
react.run({}, function() {
assert.equal(react.config.get('styles-language'), 'css');
done();
});
});
var assertStyle = function (lang, done) {
helpers.mockPrompt(react, {
stylesLanguage: lang
});
react.run({}, function() {
assert.equal(react.config.get('styles-language'), lang);
done();
});
};
it('should use sass style lang', function (done) {
assertStyle('sass', done);
});
it('should use less style lang', function (done) {
assertStyle('less', done);
});
it('should use stylus style lang', function (done) {
assertStyle('stylus', done);
});
});
describe('Subgenerators', function() {
var generatorTest = function(generatorType, specType, targetDirectory, scriptNameFn, specNameFn, suffix, done) {