Skip to content

Commit

Permalink
Updates to support stylelint v16
Browse files Browse the repository at this point in the history
- Set minimum stylelint version to be v16.0.0
- Set minimum node version to be 18.12.0 to match stylelint
- Convert codebase to be pure esm
- Drop running CI against unsupported node versions - 14 and 16.
  • Loading branch information
BPScott committed Dec 10, 2023
1 parent 3793625 commit 35ac519
Show file tree
Hide file tree
Showing 12 changed files with 192 additions and 341 deletions.
File renamed without changes.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ jobs:
strategy:
fail-fast: false
matrix:
stylelint-version: [15.x]
node-version: [20.x, 18.x, 16.x, 14.x]
stylelint-version: [16.x]
node-version: [20.x, 18.x]

steps:
- uses: actions/checkout@v4
Expand Down
9 changes: 3 additions & 6 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
const stylelint = require('stylelint');
const {
showInvisibles,
generateDifferences,
} = require('prettier-linter-helpers');
import stylelint from 'stylelint';
import {showInvisibles, generateDifferences} from 'prettier-linter-helpers';

const prettierPromise = import('prettier');

Expand Down Expand Up @@ -245,7 +242,7 @@ const ruleFunction = (expectation, options, context) => {
ruleFunction.ruleName = ruleName;
ruleFunction.messages = messages;

module.exports = stylelint.createPlugin(ruleName, ruleFunction);
export default stylelint.createPlugin(ruleName, ruleFunction);

function omitStylelintSpecificOptions(options) {
const prettierOptions = Object.assign({}, options);
Expand Down
2 changes: 1 addition & 1 deletion jest-setup.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
const getTestRule = require('jest-preset-stylelint/getTestRule');
import {getTestRule} from 'jest-preset-stylelint';

global.testRule = getTestRule({plugins: ['./']});
14 changes: 9 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@
"README.md",
"LICENSE.md"
],
"main": "index.js",
"type": "module",
"exports": {
".": "./index.js",
"./recommended": "./recommended.js"
},
"scripts": {
"lint": "eslint .",
"test": "yarn run lint && node --experimental-vm-modules node_modules/jest/bin/jest.js",
Expand All @@ -33,15 +37,15 @@
},
"peerDependencies": {
"prettier": ">=3.0.0",
"stylelint": ">=15.8.0"
"stylelint": ">=16.0.0"
},
"devDependencies": {
"eslint": "^8.44.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-n": "^15.7.0",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.6.1",
"jest-preset-stylelint": "^6.3.2",
"jest-preset-stylelint": "^7.0.0",
"postcss": "^8.4.25",
"postcss-html": "^1.5.0",
"postcss-markdown": "^1.2.0",
Expand All @@ -52,12 +56,12 @@
"prettier-plugin-astro": "^0.12.1",
"prettier-plugin-svelte": "^3.0.0",
"strip-ansi": "^6.0.0",
"stylelint": "^15.8.0",
"stylelint": "^16.0.1",
"svelte": "^4.1.0",
"typescript": "5.3.2"
},
"engines": {
"node": "^14.17.0 || >=16.0.0"
"node": ">=18.12.0"
},
"jest": {
"preset": "jest-preset-stylelint",
Expand Down
2 changes: 1 addition & 1 deletion recommended.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module.exports = {
export default {
plugins: ['.'],
rules: {'prettier/prettier': true},
};
2 changes: 1 addition & 1 deletion test/fixtures/check.inert.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const styled = require('styled-components');
import styled from 'styled-components';

const Button = styled.div`
background-image: url("x");
Expand Down
2 changes: 1 addition & 1 deletion test/fixtures/check.unparsable.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const styled = require('styled-components');
import styled from 'styled-components';

const But{ton = styled.div`
background-image: url("x");
Expand Down
2 changes: 1 addition & 1 deletion test/fixtures/stylelint.config.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module.exports = {
export default {
plugins: ['../..'],
rules: {
'prettier/prettier': [
Expand Down
25 changes: 14 additions & 11 deletions test/stylelint-prettier-e2e.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
const {spawnSync} = require('child_process');
const {resolve} = require('path');
const stripAnsi = require('strip-ansi');
import {spawnSync} from 'node:child_process';
import {resolve, dirname} from 'node:path';
import {fileURLToPath} from 'node:url';
import stripAnsi from 'strip-ansi';

const __dirname = dirname(fileURLToPath(import.meta.url));

/**
* Tests that report errors in multiple files may change the order of the files
Expand All @@ -19,8 +22,8 @@ check.invalid.css
1 problem (1 error, 0 warnings)
`.trim();

expect(result.output).toEqual(expectedResult);
expect(result.error).toEqual('');
expect(result.output).toEqual('');
expect(result.error).toEqual(expectedResult);
expect(result.status).toEqual(2);
});

Expand All @@ -35,8 +38,8 @@ check.invalid.scss
2 problems (2 errors, 0 warnings)
`.trim();

expect(result.output).toEqual(expectedResult);
expect(result.error).toEqual('');
expect(result.output).toEqual('');
expect(result.error).toEqual(expectedResult);
expect(result.status).toEqual(2);
});

Expand All @@ -49,8 +52,8 @@ check.invalid.scss

const expectedResult = ``;

expect(result.output).toEqual(expectedResult);
expect(result.error).toEqual('');
expect(result.output).toEqual('');
expect(result.error).toEqual(expectedResult);
expect(result.status).toEqual(0);
});

Expand All @@ -63,8 +66,8 @@ check.invalid.scss

const expectedResult = ``;

expect(result.output).toEqual(expectedResult);
expect(result.error).toEqual('');
expect(result.output).toEqual('');
expect(result.error).toEqual(expectedResult);
expect(result.status).toEqual(0);
});
});
Expand Down
10 changes: 7 additions & 3 deletions test/stylelint-prettier.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
const path = require('path');
const {ruleName} = require('..');
const stylelint = require('stylelint');
import path from 'node:path';
import {fileURLToPath} from 'node:url';
import stylelint from 'stylelint';
import plugin from '../index.js';

const __dirname = path.dirname(fileURLToPath(import.meta.url));
const {ruleName} = plugin;

// Reading from default .prettierrc
testRule({
Expand Down
Loading

0 comments on commit 35ac519

Please sign in to comment.