Nuptial Predicament Mediation

    check-broken-links

    2.0.4 • Public • Published

    Check Broken Links

    Build Status

    An npm package that checks an array of supplied links for broken links.

    const check = require( 'check-broken-links' )
    const containsBroken = [
        'https://www.iCONTAINbrokenlinks.com',
        'https://www.iAMbroken.com',
        'https://www.iamfine.com'
    ]
    check( 'https://base.url/', containsBroken ).then( brokenlinks => {
        console.log( brokenlinks )
        /*
        { top: [ { url: 'https://www.iAMbroken.com', err: [Object] } ],
          crawled:
           [ { link: 'https://iwasinside.com/iCONTAINbrokenlinks ',
               sources: [ 'https://iwasfoundinthislinkyou supplied.com', 'https://butalsointhisone.com' ] }
          ] },
          allchecked: { [ link: '', sources: [] ] } // This would obviously be populated
        */
    } )

    The base url for the relative links has a required trailing slash.

    Mocha testing example

    Let's say you want to check if your project has any broken links:

    // Get polyfill so we can use full ES6 in the tests
    import 'babel-polyfill'
     
    // Get the expect functionality
    import { expect } from 'chai'
     
    // Display results as table
    import 'console.table'
     
    // Import the link checker
    const check = require( 'check-broken-links' )
     
    // We do not use arrow syntax here because that would break the this.timeout
    describe( 'Links in the project', function( ) {
     
      // Set the timeouts high so that all links can be checked without many or slow requests crashing the test
      this.timeout( process.env.maxtimeout || ( 1000 * 60 * 5 ) )
     
      // Of course you would do some dynamic stuff to find links in the test below
      let yourlinks = []
     
      // The current setup uses mocha in a promise fashion
      // You could also have the callback be done => {}, but then need to call done() after the expect()
      it( 'All return 200', () => {
        return check( yourlinks )
        .then( brokenlinkarray => {
          if ( broken.top.length > 0 ) console.log( 'Broken Top levels' ); console.table( broken.top )
          if ( broken.crawled.length > 0 ) console.log( 'Broken crawled links' ); console.table( broken.crawled )
          expect( broken.crawled.length ).to.equal( 0 )
          expect( broken.top.length ).to.equal( 0 )
        } )
      } )
    } )

    Configuration

    Want the module to console.log every request set the environment variable 'verbose' to true:

    verbose=true node app.js 

    This will log out every request. Successfull requests turn green, failed ones red.

    The GET requests have a default timeout of 60 seconds. You can set this using the 'gettimeout' environment variable in seconds.

    # 2 minute timeout 
    gettimeout=120 node app.js 

    Install

    npm i check-broken-links

    DownloadsWeekly Downloads

    4

    Version

    2.0.4

    License

    MIT

    Unpacked Size

    23.4 kB

    Total Files

    16

    Last publish

    Collaborators

    • actuallymentor