eslint-plugin-package-lock
Version:
An eslint plugin that will let you lint the package-lock.json
48 lines (47 loc) • 1.62 kB
JavaScript
;
const isRecord = (arg) => !!arg && typeof arg === 'object';
const defaultPackageLockVersion = 3;
const rules = {
'lock-file-version': {
meta: {
type: 'suggestion',
},
create: (context) => {
if (!context.getFilename().endsWith('package-lock.json')) {
return {};
}
const [options] = context.options;
const desiredLockVersion = isRecord(options) && typeof options['version'] === 'number'
? options['version']
: defaultPackageLockVersion;
return {
Property: (property) => {
if (property.key.type === 'Literal' &&
property.key.value === 'lockfileVersion' &&
property.value.type === 'Literal' &&
property.value.value !== desiredLockVersion) {
context.report({
message: `Found package-lock version ${property.value.value}. Desired version is ${desiredLockVersion}`,
node: property.value,
});
}
},
};
},
},
};
const configs = {
version: {
overrides: [
{
files: ['package-lock.json'],
parser: 'eslint-plugin-json-es',
plugins: ['package-lock'],
rules: {
'package-lock/lock-file-version': ['error'],
},
},
],
},
};
module.exports = { rules, configs };