From c35f51388c85fa8451f4d77eaff37f245cb17e16 Mon Sep 17 00:00:00 2001 From: Hugo Dias Date: Tue, 4 Dec 2018 11:57:40 +0000 Subject: [PATCH 1/3] feat: add package.json linter --- cmds/lint-package-json.js | 27 ++++++++ package.json | 52 +++++++++------- src/config/.npmpackagejsonlintrc.json | 88 +++++++++++++++++++++++++++ 3 files changed, 144 insertions(+), 23 deletions(-) create mode 100644 cmds/lint-package-json.js create mode 100644 src/config/.npmpackagejsonlintrc.json diff --git a/cmds/lint-package-json.js b/cmds/lint-package-json.js new file mode 100644 index 000000000..38b53b158 --- /dev/null +++ b/cmds/lint-package-json.js @@ -0,0 +1,27 @@ +'use strict' + +const resolveBin = require('resolve-bin') +const execa = require('execa') +const { fromAegir, fromRoot } = require('./../src/utils') + +const bin = resolveBin.sync('npm-package-json-lint', { executable: 'npmPkgJsonLint' }) + +module.exports = { + command: 'lint-package-json', + desc: 'Lint package.json', + handler (argv) { + const input = argv._.slice(1) + const useBuiltinConfig = !input.includes('--configFile') + const config = useBuiltinConfig + ? ['-c', fromAegir('src/config/.npmpackagejsonlintrc.json')] + : [] + + return execa(bin, [ + fromRoot('package.json'), + ...config, + ...input + ], { + stdio: 'inherit' + }) + } +} diff --git a/package.json b/package.json index 1e2ba8209..e2332dfe1 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,21 @@ "name": "aegir", "version": "17.1.1", "description": "JavaScript project management", + "keywords": [ + "webpack", + "standard", + "lint", + "build" + ], + "homepage": "https://github.com/ipfs/aegir", + "bugs": "https://github.com/ipfs/aegir/issues", + "license": "MIT", "leadMaintainer": "Hugo Dias ", + "files":[ + "cmds", + "src", + "cli.js" + ], "main": "cli.js", "browser": { "fs": false @@ -10,6 +24,7 @@ "bin": { "aegir": "cli.js" }, + "repository": "github:ipfs/aegir", "scripts": { "lint": "node cli.js lint", "test:node": "cross-env AEGIR_TEST=hello node cli.js test -t node --files 'test/**/*.spec.js'", @@ -23,13 +38,6 @@ "release-minor": "npm run test && node cli.js release --no-build --no-test --type minor", "release-major": "npm run test && node cli.js release --no-build --no-test --type major" }, - "keywords": [ - "webpack", - "standard", - "lint", - "build" - ], - "license": "MIT", "dependencies": { "@babel/cli": "7.1.2", "@babel/core": "7.1.2", @@ -88,6 +96,7 @@ "lodash": "^4.17.11", "mocha": "^5.2.0", "mocha-jenkins-reporter": "~0.4.1", + "npm-package-json-lint": "^3.4.1", "npm-which": "^3.0.1", "nyc": "^13.1.0", "p-map": "^2.0.0", @@ -113,13 +122,22 @@ "yargs": "^12.0.2", "yargs-parser": "^11.0.0" }, - "repository": { - "type": "git", - "url": "https://github.com/ipfs/aegir" + "devDependencies": { + "chai": "^4.2.0", + "cross-env": "^5.2.0", + "mock-require": "^3.0.2", + "sinon": "^7.1.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=10.0.0", + "npm": ">=6.0.0" }, + "browserslist": [ + ">1%", + "last 2 versions", + "Firefox ESR", + "not ie < 11" + ], "contributors": [ "Alan Shaw ", "Alan Shaw ", @@ -149,17 +167,5 @@ "mkg20001 ", "npmcdn-to-unpkg-bot ", "ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ " - ], - "devDependencies": { - "chai": "^4.2.0", - "cross-env": "^5.2.0", - "mock-require": "^3.0.2", - "sinon": "^7.1.0" - }, - "browserslist": [ - ">1%", - "last 2 versions", - "Firefox ESR", - "not ie < 11" ] } diff --git a/src/config/.npmpackagejsonlintrc.json b/src/config/.npmpackagejsonlintrc.json new file mode 100644 index 000000000..54d058040 --- /dev/null +++ b/src/config/.npmpackagejsonlintrc.json @@ -0,0 +1,88 @@ +{ + "rules": { + "require-author": "off", + "require-bin": "off", + "require-bugs": "error", + "require-bundledDependencies": "off", + "require-config": "off", + "require-contributors": "warning", + "require-cpu": "off", + "require-dependencies": "off", + "require-description": "off", + "require-devDependencies": "off", + "require-directories": "off", + "require-engines": "error", + "require-files": "error", + "require-homepage": "error" , + "require-keywords": "error", + "require-license": "error", + "require-main": "error", + "require-man": "off", + "require-module": "off", + "require-name": "error", + "require-optionalDependencies": "off", + "require-os": "off", + "require-peerDependencies": "off", + "require-preferGlobal": "off", + "require-private": "off", + "require-publishConfig": "off", + "require-repository": "error", + "require-scripts": "error", + "require-version": "error", + "bin-type": "error", + "files-type": "error", + "version-type": "error", + "valid-values-engines": ["error", [ + { + "node": ">=10.0.0", + "npm": ">=6.0.0" + } + ]], + "valid-values-license": ["error", [ + "MIT" + ]], + "prefer-alphabetical-dependencies": "error", + "prefer-alphabetical-devDependencies": "error", + "prefer-property-order": ["error", + [ + "name", + "version", + "description", + "keywords", + "homepage", + "bugs", + "license", + "author", + "leadMaintainer", + "files", + "main", + "browser", + "module", + "jsnext:main", + "bin", + "repository", + "scripts", + "dependencies", + "devDependencies", + "peerDependencies", + "bundledDependencies", + "bundleDependencies", + "optionalDependencies", + "engineStrict", + "engines", + "pre-commit", + "types", + "typings", + "browserslist", + "browserify", + "babel", + "eslintConfig", + "stylelint", + "contributors", + "os", + "cpu", + "private", + "publishConfig" + ]] + } + } \ No newline at end of file From c9799f126729674aa3eab0f4b377d58e55b8b329 Mon Sep 17 00:00:00 2001 From: Hugo Dias Date: Tue, 4 Dec 2018 12:04:49 +0000 Subject: [PATCH 2/3] chore: add docs --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eaa974e76..c94d3d0c1 100644 --- a/README.md +++ b/README.md @@ -33,11 +33,15 @@ point being `src/index.js`. All test files should be placed under `test`. Individual test files should end in `.spec.js` and setup files for the node and the browser should be `test/node.js` and `test/browser.js` respectively. -Your `package.json` should have the following entries. +Your `package.json` should have the following entries and should pass `aegir lint-package-json`. ```json "main": "src/index.js", +"files": [ + "src", + "dist" +], "scripts": { "lint": "aegir lint", "release": "aegir release", @@ -69,6 +73,7 @@ You can run it using ```bash $ aegir lint +$ aegir lint-package-json ``` ### Testing From 127cfd78d8de2e31039d8039e87c7eea06426257 Mon Sep 17 00:00:00 2001 From: Hugo Dias Date: Tue, 4 Dec 2018 16:03:03 +0000 Subject: [PATCH 3/3] chore: turn off contributors --- src/config/.npmpackagejsonlintrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/.npmpackagejsonlintrc.json b/src/config/.npmpackagejsonlintrc.json index 54d058040..9cbd5d62d 100644 --- a/src/config/.npmpackagejsonlintrc.json +++ b/src/config/.npmpackagejsonlintrc.json @@ -5,7 +5,7 @@ "require-bugs": "error", "require-bundledDependencies": "off", "require-config": "off", - "require-contributors": "warning", + "require-contributors": "off", "require-cpu": "off", "require-dependencies": "off", "require-description": "off",