From ebd85116ddfc004e668c20038b5ff6499e299db5 Mon Sep 17 00:00:00 2001 From: ngryman Date: Wed, 17 Feb 2016 21:51:35 +0100 Subject: [PATCH 1/5] :art: Add support for .sasslintrc --- lib/config.js | 4 +++ tests/cli.js | 42 +++++++++++++++++++++++++ tests/yml/.sass-lint.yml/.sass-lint.yml | 1 + tests/yml/.sasslintrc/.sasslintrc | 1 + 4 files changed, 48 insertions(+) create mode 120000 tests/yml/.sass-lint.yml/.sass-lint.yml create mode 120000 tests/yml/.sasslintrc/.sasslintrc diff --git a/lib/config.js b/lib/config.js index 6f4f5590..3d79ccc1 100644 --- a/lib/config.js +++ b/lib/config.js @@ -52,6 +52,10 @@ module.exports = function (options, configPath) { } else { configPath = confHelpers.findFile(false, '.sass-lint.yml'); + + if (!configPath) { + configPath = confHelpers.findFile(false, '.sasslintrc'); + } } } else if (!pathIsAbsolute(configPath)) { diff --git a/tests/cli.js b/tests/cli.js index df7c7fef..6399e636 100644 --- a/tests/cli.js +++ b/tests/cli.js @@ -239,6 +239,48 @@ describe('cli', function () { }); }); + // Test default config files + + it('should return JSON from .sass-lint.yml', function (done) { + var command = 'sass-lint ../../sass/cli.scss --verbose'; + + childProcess.exec(command, { cwd: path.join(__dirname, 'yml', '.sass-lint.yml') }, function (err, stdout) { + + if (err) { + return done(err); + } + else { + try { + JSON.parse(stdout); + return done(); + } + catch (e) { + return done(new Error('Not JSON')); + } + } + }); + }); + + it('should return JSON from .sasslintrc', function (done) { + var command = 'sass-lint ../../sass/cli.scss --verbose'; + + childProcess.exec(command, { cwd: path.join(__dirname, 'yml', '.sasslintrc') }, function (err, stdout) { + + if (err) { + return done(err); + } + else { + try { + JSON.parse(stdout); + return done(); + } + catch (e) { + return done(new Error('Not JSON')); + } + } + }); + }); + // Test custom config path it('should return JSON from a custom config', function (done) { diff --git a/tests/yml/.sass-lint.yml/.sass-lint.yml b/tests/yml/.sass-lint.yml/.sass-lint.yml new file mode 120000 index 00000000..293a8cc2 --- /dev/null +++ b/tests/yml/.sass-lint.yml/.sass-lint.yml @@ -0,0 +1 @@ +../.color-keyword-errors.yml \ No newline at end of file diff --git a/tests/yml/.sasslintrc/.sasslintrc b/tests/yml/.sasslintrc/.sasslintrc new file mode 120000 index 00000000..293a8cc2 --- /dev/null +++ b/tests/yml/.sasslintrc/.sasslintrc @@ -0,0 +1 @@ +../.color-keyword-errors.yml \ No newline at end of file From ed93438322dde69522351ec46a3d529a99a6209b Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Wed, 22 Jun 2016 23:50:21 +0100 Subject: [PATCH 2/5] :art: Fix test issues --- tests/cli.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/cli.js b/tests/cli.js index 6399e636..dc5f1e7e 100644 --- a/tests/cli.js +++ b/tests/cli.js @@ -242,9 +242,9 @@ describe('cli', function () { // Test default config files it('should return JSON from .sass-lint.yml', function (done) { - var command = 'sass-lint ../../sass/cli.scss --verbose'; + var command = 'sass-lint ../../cli/cli.scss --verbose'; - childProcess.exec(command, { cwd: path.join(__dirname, 'yml', '.sass-lint.yml') }, function (err, stdout) { + exec(command, { cwd: path.join(__dirname, 'yml', '.sass-lint.yml') }, function (err, stdout) { if (err) { return done(err); @@ -262,10 +262,9 @@ describe('cli', function () { }); it('should return JSON from .sasslintrc', function (done) { - var command = 'sass-lint ../../sass/cli.scss --verbose'; - - childProcess.exec(command, { cwd: path.join(__dirname, 'yml', '.sasslintrc') }, function (err, stdout) { + var command = 'sass-lint ../../cli/cli.scss --verbose'; + exec(command, { cwd: path.join(__dirname, 'yml', '.sasslintrc') }, function (err, stdout) { if (err) { return done(err); } From 433b57c196af4e21e854b1dfd632c1186d5438f9 Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Tue, 9 Aug 2016 00:50:24 +0100 Subject: [PATCH 3/5] include test files --- tests/cli.js | 2 +- tests/yml/.sass-lint.yml/.sass-lint.yml | 9 ++++++++- tests/yml/.sasslintrc/.sasslintrc | 14 +++++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) mode change 120000 => 100644 tests/yml/.sass-lint.yml/.sass-lint.yml mode change 120000 => 100644 tests/yml/.sasslintrc/.sasslintrc diff --git a/tests/cli.js b/tests/cli.js index dc5f1e7e..6e004820 100644 --- a/tests/cli.js +++ b/tests/cli.js @@ -262,7 +262,7 @@ describe('cli', function () { }); it('should return JSON from .sasslintrc', function (done) { - var command = 'sass-lint ../../cli/cli.scss --verbose'; + var command = 'sass-lint ../../cli/cli.scss -c ".sasslintrc" --verbose'; exec(command, { cwd: path.join(__dirname, 'yml', '.sasslintrc') }, function (err, stdout) { if (err) { diff --git a/tests/yml/.sass-lint.yml/.sass-lint.yml b/tests/yml/.sass-lint.yml/.sass-lint.yml deleted file mode 120000 index 293a8cc2..00000000 --- a/tests/yml/.sass-lint.yml/.sass-lint.yml +++ /dev/null @@ -1 +0,0 @@ -../.color-keyword-errors.yml \ No newline at end of file diff --git a/tests/yml/.sass-lint.yml/.sass-lint.yml b/tests/yml/.sass-lint.yml/.sass-lint.yml new file mode 100644 index 00000000..2ba37375 --- /dev/null +++ b/tests/yml/.sass-lint.yml/.sass-lint.yml @@ -0,0 +1,8 @@ +options: + formatter: json + cache-config: false + merge-default-rules: false +files: + include: '**/*.s+(a|c)ss' +rules: + no-color-keywords: 1 diff --git a/tests/yml/.sasslintrc/.sasslintrc b/tests/yml/.sasslintrc/.sasslintrc deleted file mode 120000 index 293a8cc2..00000000 --- a/tests/yml/.sasslintrc/.sasslintrc +++ /dev/null @@ -1 +0,0 @@ -../.color-keyword-errors.yml \ No newline at end of file diff --git a/tests/yml/.sasslintrc/.sasslintrc b/tests/yml/.sasslintrc/.sasslintrc new file mode 100644 index 00000000..a7505d0c --- /dev/null +++ b/tests/yml/.sasslintrc/.sasslintrc @@ -0,0 +1,13 @@ +{ + "options": { + "formatter": "json", + "cache-config": false, + "merge-default-rules": false + }, + "files": { + "include": "**/*.s+(a|c)ss" + }, + "rules": { + "no-color-keywords": 1 + } +} From 554056bc5071f031ca3fe9fbea70117108cdae41 Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Sun, 3 Sep 2017 15:47:44 +0100 Subject: [PATCH 4/5] :white_check_mark: Fix tests --- tests/cli.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/cli.js b/tests/cli.js index 6e004820..b2f7bb0c 100644 --- a/tests/cli.js +++ b/tests/cli.js @@ -242,7 +242,7 @@ describe('cli', function () { // Test default config files it('should return JSON from .sass-lint.yml', function (done) { - var command = 'sass-lint ../../cli/cli.scss --verbose'; + var command = 'node ../../../bin/sass-lint ../../cli/cli.scss --verbose'; exec(command, { cwd: path.join(__dirname, 'yml', '.sass-lint.yml') }, function (err, stdout) { @@ -262,7 +262,7 @@ describe('cli', function () { }); it('should return JSON from .sasslintrc', function (done) { - var command = 'sass-lint ../../cli/cli.scss -c ".sasslintrc" --verbose'; + var command = 'node ../../../bin/sass-lint ../../cli/cli.scss -c ".sasslintrc" --verbose'; exec(command, { cwd: path.join(__dirname, 'yml', '.sasslintrc') }, function (err, stdout) { if (err) { From d977a2fe1cb85dd157e8f9a29418be1f3961d417 Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Sun, 3 Sep 2017 18:09:43 +0100 Subject: [PATCH 5/5] :memo: Add basic sasslintrc docs --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3e35eafb..20627d32 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ npm install sass-lint --save-dev ## Configuring -Sass-lint can be configured from a `.sass-lint.yml` file in your project. If you don't have one in the root of your project or you would like all your projects to follow a standard config file then you can specify the path to one in your project's `package.json` file. +Sass-lint can be configured from a `.sass-lint.yml` or `.sasslintrc` file in your project. The `.sasslintrc` file can be in either JSON format or YAML. Both formats are interchangeable easily using tools such as [json2yaml](https://www.json2yaml.com/). If you don't either file in the root of your project or you would like all your projects to follow a standard config file then you can specify the path to one in your project's `package.json` file with the `sasslintConfig` option. For example: ```javascript @@ -32,7 +32,7 @@ For example: } ``` -Use the [Sample Config](https://github.com/sasstools/sass-lint/tree/master/docs/sass-lint.yml) as a guide to create your own `.sass-lint.yml` config file. The default configuration can be found [here](https://github.com/sasstools/sass-lint/blob/master/lib/config/sass-lint.yml). +Use the [Sample Config (YAML)](https://github.com/sasstools/sass-lint/tree/master/docs/sass-lint.yml) or [Sample Config (JSON)](https://github.com/sasstools/sass-lint/tree/master/docs/sasslintrc) as a guide to create your own config file. The default configuration can be found [here](https://github.com/sasstools/sass-lint/blob/master/lib/config/sass-lint.yml). ### [Configuration Documentation](https://github.com/sasstools/sass-lint/tree/master/docs/options) @@ -48,7 +48,6 @@ The following are options that you can use to config the Sass Linter. * [merge-default-rules](https://github.com/sasstools/sass-lint/tree/master/docs/options/merge-default-rules.md) - Allows you to merge your rules with the default config file included with sass-lint * [output-file](https://github.com/sasstools/sass-lint/tree/master/docs/options/output-file.md) - Choose to write the linters output to a file - #### Files The `files` option contains two properties, `include` and `ignore`. Both can be set to either a [glob](https://github.com/isaacs/node-glob) or an array of glob strings/file paths depending on your projects' needs and setup.