fix: use strict versions to get correct deps on older versions

This commit is contained in:
Thomas Allmer 2019-12-02 10:49:42 +01:00
parent 4d029a5d4d
commit 8645c13b1d
34 changed files with 209 additions and 126 deletions

View file

@ -47,6 +47,7 @@
"lint:eslint": "eslint --ext .js,.html .",
"lint:prettier": "prettier \"**/*.js\" --list-different || (echo '↑↑ these files are not prettier formatted ↑↑' && exit 1)",
"lint:markdownlint": "git ls-files '*.md' | xargs markdownlint --ignore '**/CHANGELOG.md'",
"lint:versions": "node ./scripts/lint-versions.js",
"format": "npm run format:eslint && npm run format:prettier",
"format:eslint": "eslint --ext .js,.html . --fix",
"format:prettier": "prettier \"**/*.{js,md}\" --write"
@ -66,6 +67,9 @@
"markdownlint",
"git add"
],
"*package.json": [
"node ./scripts/lint-versions.js"
],
"yarn.lock": [
"node ./scripts/yarn-lock-scan.js"
]

View file

@ -33,7 +33,7 @@
],
"dependencies": {
"@bundled-es-modules/axios": "0.18.1",
"@lion/core": "^0.3.0"
"@lion/core": "0.3.0"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -32,12 +32,12 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0"
"@lion/core": "0.3.0"
},
"devDependencies": {
"@lion/form": "^0.3.6",
"@lion/icon": "^0.2.9",
"@lion/input": "^0.3.6",
"@lion/form": "0.3.6",
"@lion/icon": "0.2.9",
"@lion/input": "0.3.6",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4",
"@polymer/iron-test-helpers": "^3.0.1",

View file

@ -33,11 +33,11 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/localize": "^0.7.0"
"@lion/core": "0.3.0",
"@lion/localize": "0.7.0"
},
"devDependencies": {
"@lion/button": "^0.3.44",
"@lion/button": "0.3.44",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4",
"sinon": "^7.2.2"

View file

@ -32,13 +32,13 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/fieldset": "^0.5.0"
"@lion/core": "0.3.0",
"@lion/fieldset": "0.5.0"
},
"devDependencies": {
"@lion/checkbox": "^0.2.8",
"@lion/localize": "^0.7.0",
"@lion/validate": "^0.5.0",
"@lion/checkbox": "0.2.8",
"@lion/localize": "0.7.0",
"@lion/validate": "0.5.0",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4",
"sinon": "^7.2.2"

View file

@ -32,9 +32,9 @@
"*.js"
],
"dependencies": {
"@lion/choice-input": "^0.4.6",
"@lion/core": "^0.3.0",
"@lion/input": "^0.3.6"
"@lion/choice-input": "0.4.6",
"@lion/core": "0.3.0",
"@lion/input": "0.3.6"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -32,12 +32,12 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5"
"@lion/core": "0.3.0",
"@lion/field": "0.6.5"
},
"devDependencies": {
"@lion/input": "^0.3.6",
"@lion/validate": "^0.5.0",
"@lion/input": "0.3.6",
"@lion/validate": "0.5.0",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4",
"sinon": "^7.2.2"

View file

@ -30,8 +30,8 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/overlays": "^0.7.0"
"@lion/core": "0.3.0",
"@lion/overlays": "0.7.0"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -33,11 +33,11 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/validate": "^0.5.0"
"@lion/core": "0.3.0",
"@lion/validate": "0.5.0"
},
"devDependencies": {
"@lion/localize": "^0.7.0",
"@lion/localize": "0.7.0",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4",
"sinon": "^7.2.2"

View file

@ -32,13 +32,13 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5",
"@lion/validate": "^0.5.0"
"@lion/core": "0.3.0",
"@lion/field": "0.6.5",
"@lion/validate": "0.5.0"
},
"devDependencies": {
"@lion/input": "^0.3.6",
"@lion/localize": "^0.7.0",
"@lion/input": "0.3.6",
"@lion/localize": "0.7.0",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4",
"sinon": "^7.2.2"

View file

@ -32,22 +32,22 @@
"*.js"
],
"devDependencies": {
"@lion/checkbox": "^0.2.8",
"@lion/checkbox-group": "^0.3.6",
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5",
"@lion/fieldset": "^0.5.0",
"@lion/form": "^0.3.6",
"@lion/input": "^0.3.6",
"@lion/input-amount": "^0.3.6",
"@lion/input-date": "^0.3.6",
"@lion/input-email": "^0.3.6",
"@lion/input-iban": "^0.3.6",
"@lion/localize": "^0.7.0",
"@lion/radio": "^0.2.8",
"@lion/radio-group": "^0.3.6",
"@lion/textarea": "^0.3.6",
"@lion/validate": "^0.5.0",
"@lion/checkbox": "0.2.8",
"@lion/checkbox-group": "0.3.6",
"@lion/core": "0.3.0",
"@lion/field": "0.6.5",
"@lion/fieldset": "0.5.0",
"@lion/form": "0.3.6",
"@lion/input": "0.3.6",
"@lion/input-amount": "0.3.6",
"@lion/input-date": "0.3.6",
"@lion/input-email": "0.3.6",
"@lion/input-iban": "0.3.6",
"@lion/localize": "0.7.0",
"@lion/radio": "0.2.8",
"@lion/radio-group": "0.3.6",
"@lion/textarea": "0.3.6",
"@lion/validate": "0.5.0",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4"
}

View file

@ -32,14 +32,14 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/fieldset": "^0.5.0"
"@lion/core": "0.3.0",
"@lion/fieldset": "0.5.0"
},
"devDependencies": {
"@lion/input": "^0.3.6",
"@lion/input-iban": "^0.3.6",
"@lion/textarea": "^0.3.6",
"@lion/validate": "^0.5.0",
"@lion/input": "0.3.6",
"@lion/input-iban": "0.3.6",
"@lion/textarea": "0.3.6",
"@lion/validate": "0.5.0",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4",
"sinon": "^7.2.2"

View file

@ -32,7 +32,7 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0"
"@lion/core": "0.3.0"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -32,11 +32,11 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5",
"@lion/input": "^0.3.6",
"@lion/localize": "^0.7.0",
"@lion/validate": "^0.5.0"
"@lion/core": "0.3.0",
"@lion/field": "0.6.5",
"@lion/input": "0.3.6",
"@lion/localize": "0.7.0",
"@lion/validate": "0.5.0"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -32,11 +32,11 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5",
"@lion/input": "^0.3.6",
"@lion/localize": "^0.7.0",
"@lion/validate": "^0.5.0"
"@lion/core": "0.3.0",
"@lion/field": "0.6.5",
"@lion/input": "0.3.6",
"@lion/localize": "0.7.0",
"@lion/validate": "0.5.0"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -36,16 +36,16 @@
"*.js"
],
"dependencies": {
"@lion/calendar": "^0.4.0",
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5",
"@lion/input-date": "^0.3.6",
"@lion/localize": "^0.7.0",
"@lion/overlays": "^0.7.0",
"@lion/validate": "^0.5.0"
"@lion/calendar": "0.4.0",
"@lion/core": "0.3.0",
"@lion/field": "0.6.5",
"@lion/input-date": "0.3.6",
"@lion/localize": "0.7.0",
"@lion/overlays": "0.7.0",
"@lion/validate": "0.5.0"
},
"devDependencies": {
"@lion/button": "^0.3.44",
"@lion/button": "0.3.44",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4",
"sinon": "^7.2.2"

View file

@ -32,11 +32,11 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5",
"@lion/input": "^0.3.6",
"@lion/localize": "^0.7.0",
"@lion/validate": "^0.5.0"
"@lion/core": "0.3.0",
"@lion/field": "0.6.5",
"@lion/input": "0.3.6",
"@lion/localize": "0.7.0",
"@lion/validate": "0.5.0"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -33,11 +33,11 @@
],
"dependencies": {
"@bundled-es-modules/ibantools": "2.0.0",
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5",
"@lion/input": "^0.3.6",
"@lion/localize": "^0.7.0",
"@lion/validate": "^0.5.0"
"@lion/core": "0.3.0",
"@lion/field": "0.6.5",
"@lion/input": "0.3.6",
"@lion/localize": "0.7.0",
"@lion/validate": "0.5.0"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -32,12 +32,12 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5"
"@lion/core": "0.3.0",
"@lion/field": "0.6.5"
},
"devDependencies": {
"@lion/localize": "^0.7.0",
"@lion/validate": "^0.5.0",
"@lion/localize": "0.7.0",
"@lion/validate": "0.5.0",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4"
}

View file

@ -34,7 +34,7 @@
],
"dependencies": {
"@bundled-es-modules/message-format": "6.0.4",
"@lion/core": "^0.3.0"
"@lion/core": "0.3.0"
},
"devDependencies": {
"@bundled-es-modules/fetch-mock": "^6.5.2",

View file

@ -32,9 +32,9 @@
"*.js"
],
"dependencies": {
"@lion/choice-input": "^0.4.6",
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5"
"@lion/choice-input": "0.4.6",
"@lion/core": "0.3.0",
"@lion/field": "0.6.5"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -34,7 +34,7 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/core": "0.3.0",
"popper.js": "^1.15.0"
},
"devDependencies": {

View file

@ -32,12 +32,12 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/overlays": "^0.7.0"
"@lion/core": "0.3.0",
"@lion/overlays": "0.7.0"
},
"devDependencies": {
"@lion/button": "^0.3.44",
"@lion/icon": "^0.2.9",
"@lion/button": "0.3.44",
"@lion/icon": "0.2.9",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4"
}

View file

@ -32,12 +32,12 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/fieldset": "^0.5.0"
"@lion/core": "0.3.0",
"@lion/fieldset": "0.5.0"
},
"devDependencies": {
"@lion/radio": "^0.2.8",
"@lion/validate": "^0.5.0",
"@lion/radio": "0.2.8",
"@lion/validate": "0.5.0",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4"
}

View file

@ -32,9 +32,9 @@
"*.js"
],
"dependencies": {
"@lion/choice-input": "^0.4.6",
"@lion/core": "^0.3.0",
"@lion/input": "^0.3.6"
"@lion/choice-input": "0.4.6",
"@lion/core": "0.3.0",
"@lion/input": "0.3.6"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -36,15 +36,15 @@
"*.js"
],
"dependencies": {
"@lion/button": "^0.3.44",
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5",
"@lion/option": "^0.3.6",
"@lion/overlays": "^0.7.0",
"@lion/validate": "^0.5.0"
"@lion/button": "0.3.44",
"@lion/core": "0.3.0",
"@lion/field": "0.6.5",
"@lion/option": "0.3.6",
"@lion/overlays": "0.7.0",
"@lion/validate": "0.5.0"
},
"devDependencies": {
"@lion/form": "^0.3.6",
"@lion/form": "0.3.6",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4"
}

View file

@ -32,11 +32,11 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5"
"@lion/core": "0.3.0",
"@lion/field": "0.6.5"
},
"devDependencies": {
"@lion/validate": "^0.5.0",
"@lion/validate": "0.5.0",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4"
}

View file

@ -32,7 +32,7 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0"
"@lion/core": "0.3.0"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -32,14 +32,14 @@
"*.js"
],
"dependencies": {
"@lion/button": "^0.3.44",
"@lion/choice-input": "^0.4.6",
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5"
"@lion/button": "0.3.44",
"@lion/choice-input": "0.4.6",
"@lion/core": "0.3.0",
"@lion/field": "0.6.5"
},
"devDependencies": {
"@lion/localize": "^0.7.0",
"@lion/validate": "^0.5.0",
"@lion/localize": "0.7.0",
"@lion/validate": "0.5.0",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4",
"sinon": "^7.2.2"

View file

@ -32,7 +32,7 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0"
"@lion/core": "0.3.0"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -32,12 +32,12 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/field": "^0.6.5",
"@lion/core": "0.3.0",
"@lion/field": "0.6.5",
"autosize": "4.0.2"
},
"devDependencies": {
"@lion/validate": "^0.5.0",
"@lion/validate": "0.5.0",
"@open-wc/demoing-storybook": "^0.2.0",
"@open-wc/testing": "^2.3.4"
}

View file

@ -32,8 +32,8 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/overlays": "^0.7.0"
"@lion/core": "0.3.0",
"@lion/overlays": "0.7.0"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

View file

@ -34,8 +34,8 @@
"*.js"
],
"dependencies": {
"@lion/core": "^0.3.0",
"@lion/localize": "^0.7.0"
"@lion/core": "0.3.0",
"@lion/localize": "0.7.0"
},
"devDependencies": {
"@open-wc/demoing-storybook": "^0.2.0",

79
scripts/lint-versions.js Normal file
View file

@ -0,0 +1,79 @@
/* eslint-disable no-console */
const { readdirSync, existsSync, readFileSync } = require('fs');
const getDirectories = source =>
readdirSync(source, { withFileTypes: true })
.filter(pathMeta => pathMeta.isDirectory())
.map(pathMeta => pathMeta.name);
function readPackageJsonDeps(filePath) {
if (existsSync(filePath)) {
const jsonData = JSON.parse(readFileSync(filePath, 'utf-8'));
const merged = { ...jsonData.dependencies, ...jsonData.devDependencies };
const result = {};
Object.keys(merged).forEach(dep => {
if (merged[dep] && !merged[dep].includes('file:')) {
result[dep] = merged[dep];
}
});
return result;
}
return {};
}
function readPackageJsonNameVersion(filePath) {
if (existsSync(filePath)) {
const jsonData = JSON.parse(readFileSync(filePath, 'utf-8'));
const result = {};
result[jsonData.name] = `${jsonData.version}`;
return result;
}
return {};
}
function compareVersions(versionsA, versionsB) {
let output = '';
const newVersions = { ...versionsA };
Object.keys(versionsB).forEach(dep => {
if (versionsA[dep] && versionsB[dep] && versionsA[dep] !== versionsB[dep]) {
output += ` - "${dep}" should be "${versionsA[dep]}" but is "${versionsB[dep]}"\n`;
}
if (!newVersions[dep]) {
newVersions[dep] = versionsB[dep];
}
});
return {
output,
newVersions,
};
}
let currentVersions = readPackageJsonDeps('./package.json');
let endReturn = 0;
// find all versions in the monorepo
getDirectories('./packages').forEach(subPackage => {
const filePath = `./packages/${subPackage}/package.json`;
currentVersions = { ...currentVersions, ...readPackageJsonNameVersion(filePath) };
});
// lint all versions in packages
getDirectories('./packages').forEach(subPackage => {
const filePath = `./packages/${subPackage}/package.json`;
const subPackageVersions = readPackageJsonDeps(filePath);
const { output, newVersions } = compareVersions(currentVersions, subPackageVersions);
currentVersions = { ...newVersions };
if (output) {
console.log(`Version mismatches found in "${filePath}":`);
console.log(output);
console.log();
endReturn = 1;
}
});
if (endReturn === 0) {
console.log('All versions are aligned 💪');
}
process.exit(endReturn);