babel-plugin-power-log

    0.1.3 • Public • Published

    power-log - logs expressions with Power Assert tooling

    This project is built on top of power-assert by Takuto Wada (@twada).

    Provided modules:

    • power-log - log function, formatter
    • babel-plugin-power-log - plugin that automatically requires power-log module when log function is used, and there is no such function in current scope. So you can skip writing `import log from 'power-log' every time you want to debug something.
    • babel-preset-power-log - preset that adds babel-plugin-power-log plugin and instruments code with babel-plugin-espower to make it all work.

    Installation

    npm install --save-dev babel-preset-power-log

    Usage

    Wrap any expression with pass-through log function to print it to console.

    var data = { str: "apple pie" }
    var key = 'str'
    var result = log(`There is ${data[key].split(' ').length} words`)

    Outputs:

    # src/BlockDetails/Card.js:17
    
     log(`There is ${ data[key].split(' ').length } words`)
         |            |   ||    |          |               
         |            |   ||    |          2               
         |            |   ||    ["apple","pie"]            
         |            |   |"str"                           
         |            |   "apple pie"                      
         |            Object{str:"apple pie"}              
         "There is 2 words"                                
    
    

    Alternatives

    If all you need is several values in a way they are easily identified, you may simply wrap them in an object.

    console.log({ data, key })

    But there is cases where separate statement would not work. In following example functions might have side-effects so we can not call them several times and there is no room for separate statement.

    const f = (a, b) => otherFunc() + foo(a, bar(b))

    To get results of bar and foo invocations you can use this library

    import log from 'power-log'
    const f = (a, b) => otherFunc() + log(foo(a, bar(b)))

    or define simple pass-through logging function similar to the one provided by this module

    const log = arg => (console.log(arg), arg)
    const f = (a, b) => otherFunc() + log(foo(a, log(bar(b))))

    or refactor to multi-line version

    import log from 'power-log'
    const f = (a, b) => {
      const barResult = bar(b)
      const fooResult = foo(a, barResult)
      console.log({ barResult, fooResult })
      return otherFunc() + fooResult
    }

    if logged functions have no side-effects and it's ok to call them several times, you can use comma operator to inject console.log in the middle of statement.

    const f = (a, b) => otherFunc() + (
      console.log({ barResult: bar(b), fooResult: foo(a, bar(b)) }),
      foo(a, bar(b))
    )

    Install

    npm i babel-plugin-power-log

    DownloadsWeekly Downloads

    13

    Version

    0.1.3

    License

    MIT

    Last publish

    Collaborators

    • vdanchenkov