Coder Social home page Coder Social logo

fgribreau / check-build Goto Github PK

View Code? Open in Web Editor NEW
686.0 14.0 38.0 2.3 MB

:dart: Check-build - Verifies that your NodeJS project follows team conventions, is well written, up to date and secure.

Home Page: http://blog.fgribreau.com/2014/10/check-build-verify-that-your-nodejs.html

License: MIT License

JavaScript 99.15% Dockerfile 0.85%

check-build's Introduction

Deps Version Downloads

Get help on Codementor available-for-advisory extra Twitter Follow Slack

NPM NPM

Check-build - Verify that your NodeJS project follow team conventions, is well written, up to date and secure.

“Each time I start a new project/mvp/poc/module I don't want to create/edit a new grunt/gulp file or whatever hype dev use these days. I want an already packed CLI with good defaults (mine) that I can drop into my continuous build/integration process. Let's build that once and for all.”

– 10/19/2014

Usage

npm install check-build -g
cd /path/to/your/project
check-build
# [...] (sub-module output)
echo $?
# 0 if everything went right, 1 otherwise.

What's inside

Code error and potential problem detection

  • JSHint Static analysis tool for JavaScript (using JSHint stylish). If .jshintrc is not present in project root, check-build will use this .jshintrc.
  • ESLint The pluggable linting utility for JavaScript and JSX, check-build will use a .eslintrc file for ESLint configuration.
  • JSXHint JSXHint is DEPRECATED in favor of ESLint Static analysis tool for JavaScript and JSX. If .jshintrc is not present in project root, check-build will use this .jshintrc.

Code style checking

  • JSCS Check the code style of your code. If .jscsrc is not present in project root, check-build will use this .jscsrc.

Code quality

  • Plato Detect structural complexity in your code, per files.

D.R.Y

  • JSInspect Detect structural similarities in your code.
  • buddy.js Detect magic number in your code.

Freshness

  • David Check that your project dependencies are up to date.

Security

  • Nsp Check your project dependencies for security issues.

Note: check-build uses a temporary fork of nsp adding a --subdeb-warn-only argument, see why here

Philosophy

  • Leverage simplicity over performance. check-build will be run automatically by a build bot. I #%£€)° don't care about performance, I want code quality and ease of use.
  • Don't reinvent the wheel, leverage each module own configuration file. E.g. .jshintrc.
  • Even if the underneath module is not capable of handling multiple files, abstract it.
  • Use multimatch everywhere.
  • .checkbuild is there to configure each module (in case they don't use dot files for configuration), checkbuild will forward these parameters to each module implementation.

Checkbuild configuration

Put a .checkbuild file (example) in your project root directory.

{
  // Extends the current checkbuild file with others (optionnal)
  "extends": ["./.checkbuildrc_base"],
  // Download some distant files and save them into check-build command current directory
  // Usefull when used with extends (optionnal)
  "urls": ["https://raw.githubusercontent.com/FGRibreau/javascript/master/.checkbuildrc_base"],
  "checkbuild": {
    "enable": ["jshint", "eslint", "jscs", "jsinspect", "plato", "nsp", "david"],
    // don't exit immediately if one of the tools reports an error (default true)
    "continueOnError": true,
    // don't exit(1) even if we had some failures (default false)
    "allowFailures": false
  },

  "david": {
    "warn": {
      "E404": true
    },
    "ignore": ["socket.io"] // don't check socket.io package with david
    // ... and so on.
  },

  "jshint": {
    "args": ["src/**/*.js"]
    // instead of putting a .jshintrc inside each of your project with check-build
    // you can specify an URL.
    // That URL will be downloaded each time check-build is run
    // and its content will be saved inside check-build command current directory.
    // for instance the above .checkbuild jshint configuration:
    // "url":"https://raw.githubusercontent.com/FGRibreau/javascript/master/.jshintrc_base"
    // will download the jshintrc_base (the common jshint convention for your organization) inside your project.
    // This .jshintrc_base should be ignored from git and NOT commited.
    // Then, create and commit a .jshintrc that contains at least:
    // {
    //  "extends": "./.jshintrc_base",
    //  ...
    // }
    // inside this .jshintrc file you will be able to put project-specific jshint configuration.
  },

 "eslint": {
    "args": ["src/**/*.js", "src/**/*.jsx"],
    // instead of putting a .eslintrc inside each of your project with check-build
    // you can specify an URL.
    // That URL will be downloaded each time check-build is run
    // and its content will be saved inside check-build command current directory.
    // for instance the above .checkbuild jshint configuration:
    // "url":"https://raw.githubusercontent.com/FGRibreau/javascript/master/.eslintrc_base"
    // will download the eslintrc_base (the common eslint convention for your organization) inside your project.
    // This .eslintrc_base should be ignored from git and NOT commited.
    // Then, create and commit a .eslintrc that contains at least:
    // {
    //  "extends": ["./.eslintrc_base"],
    //  ...
    // }
    // inside this .eslintrc file you will be able to put project-specific ESLint configuration.
    // ... and so on.
  },

  "jscs": {
    "args": ["lib/**.js"]
    // ... and so on.
    // instead of putting a .jscrc inside each of your project with check-build
    // you can specify an URL.
    // That URL will be downloaded each time check-build is run
    // and its content will be saved inside check-build command current directory
    // "url":"https://raw.githubusercontent.com/FGRibreau/javascript/master/.jscsrc"
  },

  "jsinspect": {
    "args": ["*.js"],
    "diff": true
    // ... and so on.
  },

  "buddyjs": {
    "args": ["*.js"],
    "ignore": [0, 1, 200]
    // ... and so on.
  },

  "plato": {
    "args": ["*.js"],
    // define your project minimum average maintainability level
    "maintainability": 75.00
  },

  "nsp": {
    "args": []
  },

  "david": {
    "dev": false,
    // whether to check devDependencies or not (default false)
    "stable": true,
    // whether to check dependencies or not (default true)
    "ignore": []
    // put ignored dependencies here (both devDependencies and dependencies)
  }
}

Note: the url attribute presented for eslint is available for each extension

Final goal

A (NodeJS) project can be automatically analyzed in many dimension like code-consistency, d-r-y-ness and security. Check-build's final goal is to take the human out of the loop.

Donate

I maintain this project in my free time, if it helped you please support my work via paypal or Bitcoins, thanks a lot!

check-build's People

Contributors

baptistejamin avatar brycefisher avatar fgribreau avatar julien-leroy avatar mattisg avatar pseitz avatar sebastienfourreau avatar valeriansaliou avatar yvespasteur avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

check-build's Issues

Use david own ignore option

https://github.com/alanshaw/david#ignore-dependencies

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/27515982-use-david-own-ignore-option?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Failing to load eslint

We've been using check-build to run jscs and jshint. We now wanted to add eslint, but check-build fails to load it (running eslint separately works fine).

Simplified package.json:

{
  ...
  "devDependencies": {
    "check-build": "2.6.0",
    "eslint": "1.10.2",
    "jscs": "1.13.1",
    "jshint": "2.8.0",
    ...
  },
  ...
}

Our .checkbuild after adding eslint:

{
  "checkbuild": {
    "enable": ["eslint", "jscs", "jshint"],
    "allowFailures": false,
    "continueOnError": true
  },
  "eslint": {
    "args": ["."]
  },
  "jscs": {
    "args": ["."]
  },
  "jshint": {
    "args": ["."]
  },
}

Running eslint independently works:

$ eslint .
$ echo $?
0

However, check-build fails on eslint:

$ check-build
[eslint]

/bin/sh: <project_dir>/node_modules/check-build/node_modules/.bin/eslint: No such file or directory


Checkbuild module "eslint" failed.

true

[jscs]
No code style errors found.

[jshint]

✔ No problems


1 module(s) failed, exiting.

I don't fully understand if this is an issue with check-build looking for eslint in the wrong directory (if it was meant to use <project_dir>/node_modules/.bin/eslint instead, which exists) or looking at the right directory but for some reason not being shipped with the necessary bin.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28717323-failing-to-load-eslint?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Support for an URL option for jscsrc

Instead of putting a .jscrc inside each of your project with check-build you can specify an URL. That URL will be downloaded each time check-build is run and its content will be saved inside check-build command current directory.

  "jscs": {
    "args": ["lib/**.js"],
    "url":"https://raw.githubusercontent.com/FGRibreau/javascript/master/.jscsrc"
  },

Don't bail out early

check-build seems neat but if jshint reports any warnings, the other tools don't run:

[jshint]

assets/js/controllers.js
  line 18  col 20  Expected '===' and instead saw '=='.
  line 26  col 20  Expected '===' and instead saw '=='.
  line 34  col 20  Expected '===' and instead saw '=='.

assets/js/filters.js
  line 19  col 25  Expected '===' and instead saw '=='.
  line 20  col 25  Expected '===' and instead saw '=='.
  line 21  col 25  Expected '===' and instead saw '=='.
  line 22  col 25  Expected '===' and instead saw '=='.

  ⚠  7 warnings

Checkbuild module "jshint" failed, exiting.
true

Can I configure check-build to keep running all of the tools despite warnings (or errors?) being reported back from one or more?

.istanbul.yml with default-excludes: false

When changing default-excludes to false the coverage report starts failing with the following error message:

Failed to parse file: ...\node_modules\acorn-jsx\node_modules\acorn\dist\acorn_loose.es.js

...\node_modules\istanbul\lib\instrumenter.js:468
                throw e;
                ^
Error: Line 1: Unexpected token
    at constructError (...\node_modules\istanbul\node_modules\esprima\esprima.js:2407:21)
    at createError (...\node_modules\istanbul\node_modules\esprima\esprima.js:2426:17)
    at unexpectedTokenError (...\node_modules\istanbul\node_modules\esprima\esprima.js:2500:13)
    at tolerateUnexpectedToken (...\node_modules\istanbul\node_modules\esprima\esprima.js:2509:21)
    at parseStatementListItem (...\node_modules\istanbul\node_modules\esprima\esprima.js:3973:21)
    at parseFunctionSourceElements (...\node_modules\istanbul\node_modules\esprima\esprima.js:4869:23)
    at parseFunctionExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:5074:16)
    at parsePrimaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3273:24)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseLeftHandSideExpressionAllowCall (...\node_modules\istanbul\node_modules\esprima\esprima.js:3414:20)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parsePostfixExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3490:16)
    at parseUnaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3550:20)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseBinaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3639:16)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseConditionalExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3696:16)
    at parseAssignmentExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3893:16)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseGroupExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3162:16)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parsePrimaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3239:20)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseLeftHandSideExpressionAllowCall (...\node_modules\istanbul\node_modules\esprima\esprima.js:3414:20)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parsePostfixExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3490:16)
    at parseUnaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3550:20)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseBinaryExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3639:16)
    at inheritCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2681:18)
    at parseConditionalExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3696:16)
    at parseAssignmentExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3893:16)
    at isolateCoverGrammar (...\node_modules\istanbul\node_modules\esprima\esprima.js:2663:18)
    at parseExpression (...\node_modules\istanbul\node_modules\esprima\esprima.js:3942:16)
    at parseExpressionStatement (...\node_modules\istanbul\node_modules\esprima\esprima.js:4222:20)
    at parseStatement (...\node_modules\istanbul\node_modules\esprima\esprima.js:4760:24)
    at parseStatementListItem (...\node_modules\istanbul\node_modules\esprima\esprima.js:3989:16)
    at parseScriptBody (...\node_modules\istanbul\node_modules\esprima\esprima.js:5490:25)
    at parseProgram (...\node_modules\istanbul\node_modules\esprima\esprima.js:5506:16)
    at Object.parse (...\node_modules\istanbul\node_modules\esprima\esprima.js:5690:23)
    at Object.instrumentSync (...\node_modules\istanbul\lib\instrumenter.js:459:31)
    at ...\node_modules\istanbul\lib\command\common\run-with-cover.js:224:33
    at Array.forEach (native)
    at process.<anonymous> (...\node_modules\istanbul\lib\command\common\run-with-cover.js:222:39)
    at process.g (events.js:292:16)
    at emitOne (events.js:96:13)
    at process.emit (events.js:188:7)
    at process.exit (internal/process.js:164:15)
    at done (...\node_modules\mocha\bin\_mocha:490:15)
    at afterWrite (_stream_writable.js:385:3)
    at _combinedTickCallback (internal/process/next_tick.js:86:20)
    at process._tickCallback (internal/process/next_tick.js:104:9)
npm ERR! Test failed.  See above for more details.

Support for HTML Code sniffer

https://github.com/squizlabs/HTML_CodeSniffer

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/8777191-support-for-html-code-sniffer?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

multiple .jshintrc seems to be not supported.

My project is defined as described bellow :

  • .checkbuild
  • .jshintrc
  • src/
  • tests/
    • .jshintrc
    • specs/

Here is the content of .checkbuild :

  "jshint": {
    "args": [
      "src/**/*.js",
      "tests/specs/**/*.js",
      "tests/utils/**/*.js"
    ]
  },

My problem is that when launching check-build, it seems that jshint does not use the "test" .jshintrc when checking the test files : all the "it", "before", "describe" raise warnings while there is "mocha": true, inside the .jshintrc.
When I launch jshint manually it is working fine.
I used jshint v2.8.0 for the manual test, and check-build v1.5.0.

I assume that check-build only look to the project root for the .jshintrc file.

Support for jscpd (copy/paste detector)

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25348384-support-for-jscpd-copy-paste-detector?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Add Retire.js

It seems to me that Retire follows a different approach to identifying modules with vulnerabilities than Nsp does. If this is confirmed, I would support the inclusion of Retire to check-build.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Add support for Snyk (nsp-like)

https://github.com/Snyk/snyk

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/29070739-add-support-for-snyk-nsp-like?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Erros with jsinspect

I'm getting erros with the jsinspect module. I added a .jscsrc to the project and got this error.

Checkbuild module interface for "jsinpsect" was not found
{ [Error: Cannot find module './src/interface/jsinpsect'] code: 'MODULE_NOT_FOUND' }
[jsinpsect]

C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\check-build.js:55
module(checkbuildOptions[name], function (err) {
^
TypeError: undefined is not a function
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\check-build.js:55:5
at iterate (C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\node_modules\async\lib\async.js:
149:13)
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\node_modules\async\lib\async.js:160:25
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\check-build.js:62:7
at module.exports (C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\src\interface\jscs.js:10:
3)
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\check-build.js:55:5
at iterate (C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\node_modules\async\lib\async.js:
149:13)
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\node_modules\async\lib\async.js:160:25
at C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\check-build.js:62:7
at module.exports (C:\Users\viulraug\AppData\Roaming\npm\node_modules\check-build\src\interface\jshint.js:4
0:3)

JSHint url: write the same filename as the distant one

Let say your .checkbuild file contains:

"jshint": {
  "args": ["**/*.js",  "!*node_modules/**"],
  "url":"https://raw.githubusercontent.com/iadvize/javascript-convention/master/.jshintrc_base"
},

and you have a .jshintrc file inside your project:

{
  "extends": "./.jshintrc_base",
  // ... e.g.:
  "maxparams": 10
}

check-build will automatically download the .jshintrc_base into your project and jshint will take care of merging both files through extends!

Support Facebook flow

http://www.sitepoint.com/writing-better-javascript-with-flow etc...

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25834514-support-facebook-flow?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Bump up to NSP v2.0.0

Hey there,

Looks like current check-build NSP version is broken (v1.1.0), I constantly get:

/usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:59
    return m ? m.index + 1 : c.length;
                              ^

TypeError: Cannot read property 'length' of undefined
    at dotindex (/usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:59:31)
    at /usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:11:21
    at Array.forEach (native)
    at forEach (/usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:73:31)
    at /usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:10:9
    at Array.reduce (native)
    at reduce (/usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:63:30)
    at module.exports (/usr/local/lib/node_modules/nsp/node_modules/text-table/index.js:9:20)
    at prettyOutput (/usr/local/lib/node_modules/nsp/lib/prettyOutput.js:32:17)
    at /usr/local/lib/node_modules/nsp/commands/auditPackage/index.js:35:9

-- Which breaks my local tests + CI + ...production deploys.

Would be great if you could bump it up to the newly-available, bleeding edge NSP v2.0.0.

🍻

handle .jsinspectrc (jsinspect 0.2.0)

Since check-build is using jsinspect internal API it should now read .jsinspectrc file.

Am I right @danielstjules?

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/5757760-handle-jsinspectrc-jsinspect-0-2-0?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

David output is blank (deps are not checked)

Looks like David check task is buggy. With a standard check-build configuration, the task is executed w/o checking or outputting anything (no dependencies up to date message).

If I manually downgrade a random dependency, David still does not complaint that dependencies are out-to-date.

Would that be a bug introduced recently, or a misconfiguration on my side? - I remember it used to work on older projects I had, like 4 months ago.

Here's my .checkbuild conf file:

{
  "checkbuild": {
    "enable": ["jshint", "jscs", "nsp", "david"],
    "continueOnError": true,
    "allowFailures": false
  },
  "jshint": {
    "args": ["src/**/*.js"]
  },
  "jscs": {
    "args": ["src/**/*.js"]
  },
  "nsp": {}
}

Note that other tasks are successfully applied (JSHint fails/validates as expected, etc).

Cheers!

Eshint on Windows

Getting weird errors when trying to use eslint on windows. Any idea?

[eslint]
internal/child_process.js:319
    throw errnoException(err, 'spawn');
    ^

Error: spawn UNKNOWN
    at exports._errnoException (util.js:1018:11)
    at ChildProcess.spawn (internal/child_process.js:319:11)
    at exports.spawn (child_process.js:378:9)
    at Object.exec (...\node_modules\check-build\src\interface\_utils.js:108:5)
    at ...\node_modules\check-build\src\interface\eslint.js:23:11
    at checkModuleInterface (...\node_modules\check-build\src\checkBuild.js:44:20)
    at ...\node_modules\check-build\src\checkBuild.js:26:9
    at ...\node_modules\async\lib\async.js:375:13
    at Immediate.iterate (...\node_modules\async\lib\async.js:262:13)
    at runCallback (timers.js:672:20)
npm ERR! Test failed.  See above for more details.

Use Drool for memory-leak-detection

https://github.com/samccone/drool

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/27369538-use-drool-for-memory-leak-detection?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Documentation

Develop a tool like "check-docs" or "dox-check" to check that at least X% functions are documented per files. Something like jsinspect but for documentation.

Then add an interface to check-build.

PR are welcome for this!

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/5733682-documentation?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Support for npmlint

https://github.com/sindresorhus/npmlint

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28710125-support-for-npmlint?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

npm outdated

Add an interface for npm outdated. I will happily accept PR for this.

check-build -v should display version number

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25490185-check-build-v-should-display-version-number?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7304231&utm_medium=issues&utm_source=github).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.