charlierudolph / dependency-lint

Lints NPM dependencies and devDependencies
MIT License
14 stars 6 forks source link

*-sass in unused causes errors #42

Closed nfriedly closed 7 years ago

nfriedly commented 7 years ago

Hi,

I added a - *-sass line under unused: in my config file, and suddenly it couldn't load at all. This might be a bug in the dependencies, but I figured I'd report it here first.

The codebase I'm working on uses eyeglass to enabling loading sass modules via npm. Most of these are named things like modularscale-sass or breakpoint-sass, etc. I tried just adding a wildcard rule, but it fails like so:

Error
    at generateError (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:162:10)
    at throwError (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:168:9)
    at readAlias (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1248:5)
    at composeNode (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1340:20)
    at readBlockMapping (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1008:16)
    at composeNode (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1331:12)
    at readBlockSequence (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:927:5)
    at composeNode (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1330:12)
    at readBlockMapping (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1061:11)
    at composeNode (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1331:12)
    at readBlockMapping (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1061:11)
    at composeNode (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1331:12)
    at readDocument (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1493:3)
    at loadDocuments (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1549:5)
    at load (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1566:19)
    at Object.safeLoad (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/js-yaml/lib/js-yaml/loader.js:1584:10)

I also tried adding it in quotes: - '*-sass' and that got me a different error:

SyntaxError: Invalid regular expression: /*-sass/: Nothing to repeat
    at String.match (native)
    at /Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/dist/linter/dependency_linter.js:83:21
    at arraySome (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/lodash/lodash.js:747:11)
    at Function.some (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/lodash/lodash.js:9914:14)
    at DependencyLinter.isErrorIgnored (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/dist/linter/dependency_linter.js:82:16)
    at /Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/dist/linter/dependency_linter.js:69:39
    at Array.forEach (native)
    at DependencyLinter.lint (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/dist/linter/dependency_linter.js:67:17)
    at DependencyLinter.lint (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/dist/linter/dependency_linter.js:3:59)
    at Linter.<anonymous> (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/dist/linter/index.js:41:36)
    at Generator.next (<anonymous>)
    at Generator.tryCatcher (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/bluebird/js/release/util.js:16:23)
    at PromiseSpawn._promiseFulfilled (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/bluebird/js/release/generators.js:97:49)
    at Promise._settlePromise (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/bluebird/js/release/promise.js:572:26)
    at Promise._settlePromise0 (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/bluebird/js/release/promise.js:612:10)
    at Promise._settlePromises (/Users/nfriedly/.nvm/versions/node/v7.1.0/lib/node_modules/dependency-lint/node_modules/bluebird/js/release/promise.js:691:18)
charlierudolph commented 7 years ago

Both errors makes sense to me.

The first is yaml needs * to be in a string. And then *-sass is not a valid regular expression. You could use something like .*-sass or just remove the *.

charlierudolph commented 7 years ago

If you need the actual star character you can use '\\*-sass' which results in the regex /\*-sass/

nfriedly commented 7 years ago

Ok, I hadn't realized that they were supposed to be regular expressions. I had been putting in lines like

#...
ignoreErrors:
  unused:
   - karma-*
   - eslint-*

My thinking was "*" was a wildcard, and otherwise the line would need to be an exact match.

That makes the second error make sense. I still not sure if I get the first one though - is it just bad yaml syntax to have a array item where the first character is *?

charlierudolph commented 7 years ago

* is a special yaml character when at the beginning for anchors