UNPKG

eslint-plugin-json-files

Version:
54 lines (48 loc) 1.25 kB
'use strict'; const path = require('path'); module.exports = { meta: { docs: { description: 'require a license in package.json' }, schema: [ { 'enum': ['node-only', 'require-npm'] } ] }, create(context) { let filename = context.getFilename(); if (path.basename(filename) !== 'package.json') { return {}; } let requireNpm = context.options[0] === 'require-npm'; return { AssignmentExpression(node) { let json = node.right; let property = json.properties.find(p => p.key.value === 'engines'); if (!property) { context.report({ node: json, message: 'Missing engines.' }); return; } let engines = property.value; if (!engines.properties || !engines.properties.some(p => p.key.value === 'node')) { context.report({ node: engines, message: 'Missing node engine.' }); return; } if (requireNpm && !engines.properties.some(p => p.key.value === 'npm')) { context.report({ node: engines, message: 'Missing npm engine.' }); } } }; } };