UNPKG

eslint-plugin-package-lock

Version:

An eslint plugin that will let you lint the package-lock.json

48 lines (47 loc) 1.62 kB
"use strict"; 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 };