diff --git a/packages/bower-json/lib/json.js b/packages/bower-json/lib/json.js index 7467f49cf..46b12788f 100644 --- a/packages/bower-json/lib/json.js +++ b/packages/bower-json/lib/json.js @@ -136,16 +136,16 @@ function getIssues(json) { if (!json.name) { errors.push('No "name" property set'); } else { - if (!/^[a-zA-Z0-9_][a-zA-Z0-9\.\-_]*$/.test(json.name)) { - errors.push('Name must be lowercase string, with dots, dashes, or @'); + if (!/^[a-zA-Z0-9_@][a-zA-Z0-9_@\.\- \/]*$/.test(json.name)) { + errors.push('Name must be lowercase, can contain digits, dots, dashes, "@" or spaces'); } if (json.name.length > 50) { warnings.push('The "name" is too long, the limit is 50 characters'); } - if (/[A-Z]/.test(json.name)) { - warnings.push('The "name" must be lowercase'); + if (!/^[a-z0-9_][a-z0-9_\.\-]*$/.test(json.name)) { + warnings.push('The "name" is recommended to be lowercase, can contain digits, dots, dashes'); } if (/^[\.-]/.test(json.name)) { diff --git a/packages/bower-json/test/test.js b/packages/bower-json/test/test.js index 9344fba85..7be7d6abb 100644 --- a/packages/bower-json/test/test.js +++ b/packages/bower-json/test/test.js @@ -272,6 +272,12 @@ describe('.parse', function () { }); describe('.getIssues', function () { + it('should print no errors even for weird package names', function () { + var json = { name: '@gruNt/my dependency' }; + + expect(bowerJson.getIssues(json).errors).to.be.empty(); + }); + it('should validate the name length', function () { var json = { name: 'a_123456789_123456789_123456789_123456789_123456789_z' }; @@ -284,7 +290,7 @@ describe('.getIssues', function () { var json = { name: 'gruNt' }; expect(bowerJson.getIssues(json).warnings).to.contain( - 'The "name" must be lowercase' + 'The "name" is recommended to be lowercase, can contain digits, dots, dashes' ); });