yarnpkg/yarn

Better handling of nested executable script

jourdain opened this issue ยท 20 comments

Do you want to request a feature or report a bug?

feature/bug

What is the current behavior?

Let's pretend your project "A" has a dependency on "B" and "B" has a dependency on "Webpack", "ESlint" and more CLI...

Those CLI will be stored inside {A}/node_modules/B/node_modules/.bin/* which will prevent any CLI from working within project "A".

It will be nice to have B CLI's available in A, like npm 3+ do.

I see several options:

  1. Gather any nested CLI to the root ./node_modules/.bin
  2. Gather only global package to the root
  3. Add metadata inside package.json for project like B that act as meta-packages.

If the current behavior is a bug, please provide the steps to reproduce.

$ mkdir tmp
$ cd tmp/
$ yarn init
$ yarn add kw-web-suite
$ ls node_modules/.bin/
  fix-kw-web-suite
$ ls node_modules/kw-web-suite/node_modules/.bin/
  commitizen  eslint  git-cz  semantic-release  shjs  webpack  webpack-dev-server

What is the expected behavior?

I would expect to see node_modules/kw-web-suite/node_modules/.bin/ inside node_modules/.bin/

Please mention your node.js, yarn and operating system version.

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.11.6
BuildVersion:   15G1004
$ node --version
v6.3.1
$ yarn --version
0.15.1

I would like to add that for me, using 0.15.1 on node 6.7.0, OSX El capitan:
when installing regular open source projects from npmjs, yarn installs node_modules/.bin.
The issue occurs only when installing from private repositories, then yarn doesn't event create the .bin folder at all, although the rest of node_modules looks fine.

In the mean time I'm using this gist to just mimic what npm usually does with all executables under node_modules (symlinks them into node_modules/.bin): https://gist.github.com/DanielZlotin/4199f3dd85d1b952117ea260a99fdb72

nice! Thanks for sharing

OK so further testing reveals the problem to be completely different: this has nothing to do with private repositories and can be reproduced using npmjs.
This only happens to inner dependencies.

For example: if you have in your dependencies eslint, the resulting node_modules/.bin is:

eslint -> ../eslint/bin/eslint.js

But, if you remove everything from dependencies and put, say, standard, using yarn, you get only this single file under node_modules/.bin:

standard -> ../standard/bin/cmd.js

notice no eslint executable is present, even though standard brings eslint transitively.

To compare, here is the resulting install of a single dependency standard using npm 3:

drwxr-xr-x   12  361602828   408B Oct 18 20:19 .
drwxr-xr-x  146  361602828   4.8K Oct 18 20:19 ..
lrwxr-xr-x    1  361602828    18B Oct 18 20:19 acorn -> ../acorn/bin/acorn
lrwxr-xr-x    1  361602828    23B Oct 18 20:19 eslint -> ../eslint/bin/eslint.js
lrwxr-xr-x    1  361602828    25B Oct 18 20:19 esparse -> ../esprima/bin/esparse.js
lrwxr-xr-x    1  361602828    28B Oct 18 20:19 esvalidate -> ../esprima/bin/esvalidate.js
lrwxr-xr-x    1  361602828    25B Oct 18 20:19 js-yaml -> ../js-yaml/bin/js-yaml.js
lrwxr-xr-x    1  361602828    20B Oct 18 20:19 mkdirp -> ../mkdirp/bin/cmd.js
lrwxr-xr-x    1  361602828    16B Oct 18 20:19 rimraf -> ../rimraf/bin.js
lrwxr-xr-x    1  361602828    19B Oct 18 20:19 shjs -> ../shelljs/bin/shjs
lrwxr-xr-x    1  361602828    22B Oct 18 20:19 standard -> ../standard/bin/cmd.js
lrwxr-xr-x    1  361602828    29B Oct 18 20:19 strip-json-comments -> ../strip-json-comments/cli.js

As you can see, every transitive dependency which has an executable defined under package.json bin is getting linked in the top-most node_modules/.bin folder.

@DanielZlotin you were right about that commit! I've created a PR that should fix this issue: #1210

Just wanted to share this https://github.com/wix/yarn-bin-fix. This is a temporary fix to our migration pains.

Fixed via #1210.

Still not fix with yarn@0.16.1.

$ mkdir tmp
$ cd tmp/
$ yarn add kw-web-suite
yarn add v0.16.1
info No lockfile found.
[1/4] ๐Ÿ”  Resolving packages...
warning kw-web-suite > semantic-release > npmconf@2.1.2: this package has been reintegrated into npm and is now out of date with respect to npm
warning kw-web-suite > commitizen > find-node-modules > findup-sync > glob > minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
warning kw-web-suite > semantic-release > @semantic-release/commit-analyzer > conventional-changelog@0.0.17: Please update conventional-changelog to >1.0.0. If you are running the cli, use conventional-changelog-cli
[2/4] ๐Ÿšš  Fetching packages...
[3/4] ๐Ÿ”—  Linking dependencies...
[4/4] ๐Ÿ“ƒ  Building fresh packages...
success Saved lockfile.
success Saved 866 new dependencies.
โ”œโ”€ @semantic-release/commit-analyzer@2.0.0
โ”œโ”€ @semantic-release/condition-travis@4.1.4
โ”œโ”€ @semantic-release/error@1.0.0
โ”œโ”€ @semantic-release/last-release-npm@1.2.1
โ”œโ”€ @semantic-release/release-notes-generator@2.0.0
โ”œโ”€ abbrev@1.0.9
โ”œโ”€ accepts@1.3.3
โ”œโ”€ acorn-jsx@3.0.1
โ”œโ”€ acorn@3.3.0
โ”œโ”€ ajv-keywords@1.1.1
โ”œโ”€ ajv@4.8.2
โ”œโ”€ align-text@0.1.4
โ”œโ”€ alphanum-sort@1.0.2
โ”œโ”€ amdefine@1.0.1
โ”œโ”€ ansi-escapes@1.4.0
โ”œโ”€ ansi-regex@2.0.0
โ”œโ”€ ansi-styles@2.2.1
โ”œโ”€ ansi@0.3.1
โ”œโ”€ anymatch@1.3.0
โ”œโ”€ aproba@1.0.4
โ”œโ”€ are-we-there-yet@1.0.6
โ”œโ”€ argparse@1.0.9
โ”œโ”€ arr-diff@2.0.0
โ”œโ”€ arr-flatten@1.0.1
โ”œโ”€ array-find-index@1.0.2
โ”œโ”€ array-find@1.0.0
โ”œโ”€ array-flatten@1.1.1
โ”œโ”€ array-union@1.0.2
โ”œโ”€ array-uniq@1.0.3
โ”œโ”€ array-unique@0.2.1
โ”œโ”€ arrify@1.0.1
โ”œโ”€ asap@2.0.5
โ”œโ”€ asn1.js@4.8.1
โ”œโ”€ asn1@0.2.3
โ”œโ”€ assert-plus@0.2.0
โ”œโ”€ assert@1.4.1
โ”œโ”€ ast-types@0.9.0
โ”œโ”€ async-each@1.0.1
โ”œโ”€ async@1.5.2
โ”œโ”€ asynckit@0.4.0
โ”œโ”€ autoprefixer@6.5.0
โ”œโ”€ aws-sign2@0.6.0
โ”œโ”€ aws4@1.5.0
โ”œโ”€ babel-code-frame@6.16.0
โ”œโ”€ babel-core@6.17.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ babel-eslint@7.0.0
โ”œโ”€ babel-generator@6.18.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ babel-helper-builder-react-jsx@6.18.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ babel-helper-call-delegate@6.18.0
โ”œโ”€ babel-helper-define-map@6.18.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ babel-helper-function-name@6.18.0
โ”œโ”€ babel-helper-get-function-arity@6.18.0
โ”œโ”€ babel-helper-hoist-variables@6.18.0
โ”œโ”€ babel-helper-optimise-call-expression@6.18.0
โ”œโ”€ babel-helper-regex@6.18.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ babel-helper-replace-supers@6.18.0
โ”œโ”€ babel-helpers@6.16.0
โ”œโ”€ babel-loader@6.2.5
โ”œโ”€ babel-messages@6.8.0
โ”œโ”€ babel-plugin-check-es2015-constants@6.8.0
โ”œโ”€ babel-plugin-syntax-flow@6.18.0
โ”œโ”€ babel-plugin-syntax-jsx@6.18.0
โ”œโ”€ babel-plugin-transform-es2015-arrow-functions@6.8.0
โ”œโ”€ babel-plugin-transform-es2015-block-scoped-functions@6.8.0
โ”œโ”€ babel-plugin-transform-es2015-block-scoping@6.18.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ babel-plugin-transform-es2015-classes@6.18.0
โ”œโ”€ babel-plugin-transform-es2015-computed-properties@6.8.0
โ”œโ”€ babel-plugin-transform-es2015-destructuring@6.18.0
โ”œโ”€ babel-plugin-transform-es2015-duplicate-keys@6.8.0
โ”œโ”€ babel-plugin-transform-es2015-for-of@6.18.0
โ”œโ”€ babel-plugin-transform-es2015-function-name@6.9.0
โ”œโ”€ babel-plugin-transform-es2015-literals@6.8.0
โ”œโ”€ babel-plugin-transform-es2015-modules-amd@6.18.0
โ”œโ”€ babel-plugin-transform-es2015-modules-commonjs@6.18.0
โ”œโ”€ babel-plugin-transform-es2015-modules-systemjs@6.18.0
โ”œโ”€ babel-plugin-transform-es2015-modules-umd@6.18.0
โ”œโ”€ babel-plugin-transform-es2015-object-super@6.8.0
โ”œโ”€ babel-plugin-transform-es2015-parameters@6.18.0
โ”œโ”€ babel-plugin-transform-es2015-shorthand-properties@6.18.0
โ”œโ”€ babel-plugin-transform-es2015-spread@6.8.0
โ”œโ”€ babel-plugin-transform-es2015-sticky-regex@6.8.0
โ”œโ”€ babel-plugin-transform-es2015-template-literals@6.8.0
โ”œโ”€ babel-plugin-transform-es2015-typeof-symbol@6.18.0
โ”œโ”€ babel-plugin-transform-es2015-unicode-regex@6.11.0
โ”‚  โ””โ”€ regexpu-core@2.0.0
โ”œโ”€ babel-plugin-transform-flow-strip-types@6.18.0
โ”œโ”€ babel-plugin-transform-react-display-name@6.8.0
โ”œโ”€ babel-plugin-transform-react-jsx-self@6.11.0
โ”œโ”€ babel-plugin-transform-react-jsx-source@6.9.0
โ”œโ”€ babel-plugin-transform-react-jsx@6.8.0
โ”œโ”€ babel-plugin-transform-regenerator@6.16.1
โ”œโ”€ babel-plugin-transform-strict-mode@6.18.0
โ”œโ”€ babel-polyfill@6.16.0
โ”œโ”€ babel-preset-es2015@6.16.0
โ”œโ”€ babel-preset-react@6.16.0
โ”œโ”€ babel-register@6.18.0
โ”‚  โ”œโ”€ babel-core@6.18.2
โ”‚  โ”œโ”€ json5@0.5.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ babel-runtime@6.18.0
โ”œโ”€ babel-template@6.16.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ babel-traverse@6.18.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ babel-types@6.18.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ babylon@6.13.1
โ”œโ”€ balanced-match@0.4.2
โ”œโ”€ base64-js@1.2.0
โ”œโ”€ Base64@0.2.1
โ”œโ”€ batch@0.5.3
โ”œโ”€ bcrypt-pbkdf@1.0.0
โ”œโ”€ big.js@3.1.3
โ”œโ”€ binary-extensions@1.7.0
โ”œโ”€ block-stream@0.0.9
โ”œโ”€ bluebird@3.4.6
โ”œโ”€ bn.js@4.11.6
โ”œโ”€ boolbase@1.0.0
โ”œโ”€ boom@2.10.1
โ”œโ”€ brace-expansion@1.1.6
โ”œโ”€ braces@1.8.5
โ”œโ”€ brorand@1.0.6
โ”œโ”€ browserify-aes@1.0.6
โ”œโ”€ browserify-cipher@1.0.0
โ”œโ”€ browserify-des@1.0.0
โ”œโ”€ browserify-rsa@4.0.1
โ”œโ”€ browserify-sign@4.0.0
โ”œโ”€ browserify-zlib@0.1.4
โ”œโ”€ browserslist@1.4.0
โ”œโ”€ buffer-shims@1.0.0
โ”œโ”€ buffer-xor@1.0.3
โ”œโ”€ buffer@4.9.1
โ”œโ”€ builtin-modules@1.1.1
โ”œโ”€ bytes@2.3.0
โ”œโ”€ caller-path@0.1.0
โ”œโ”€ callsites@0.2.0
โ”œโ”€ camel-case@3.0.0
โ”œโ”€ camelcase-keys@2.1.0
โ”‚  โ””โ”€ camelcase@2.1.1
โ”œโ”€ camelcase@1.2.1
โ”œโ”€ caniuse-db@1.0.30000574
โ”œโ”€ caseless@0.11.0
โ”œโ”€ center-align@0.1.3
โ”œโ”€ chalk@1.1.3
โ”‚  โ””โ”€ supports-color@2.0.0
โ”œโ”€ change-case@3.0.0
โ”œโ”€ cheerio@0.19.0
โ”œโ”€ chokidar@1.6.1
โ”‚  โ””โ”€ is-glob@2.0.1
โ”œโ”€ cipher-base@1.0.3
โ”œโ”€ circular-json@0.3.1
โ”œโ”€ clap@1.1.1
โ”œโ”€ clean-css@3.4.20
โ”‚  โ”œโ”€ commander@2.8.1
โ”‚  โ””โ”€ source-map@0.4.4
โ”œโ”€ cli-cursor@1.0.2
โ”œโ”€ cli-width@2.1.0
โ”œโ”€ cliui@2.1.0
โ”‚  โ””โ”€ wordwrap@0.0.2
โ”œโ”€ clone@1.0.2
โ”œโ”€ co@4.6.0
โ”œโ”€ coa@1.0.1
โ”œโ”€ code-point-at@1.1.0
โ”œโ”€ color-convert@1.6.0
โ”œโ”€ color-name@1.1.1
โ”œโ”€ color-string@0.3.0
โ”œโ”€ color@0.11.4
โ”œโ”€ colormin@1.1.2
โ”œโ”€ colors@1.1.2
โ”œโ”€ combined-stream@1.0.5
โ”œโ”€ commander@2.9.0
โ”œโ”€ commitizen@2.8.6
โ”‚  โ”œโ”€ find-root@1.0.0
โ”‚  โ”œโ”€ glob@7.0.5
โ”‚  โ”œโ”€ inquirer@1.1.2
โ”‚  โ”‚  โ””โ”€ lodash@4.16.6
โ”‚  โ”œโ”€ lodash@4.15.0
โ”‚  โ”œโ”€ path-exists@2.1.0
โ”‚  โ”œโ”€ run-async@2.2.0
โ”‚  โ”œโ”€ shelljs@0.5.3
โ”‚  โ””โ”€ strip-json-comments@2.0.1
โ”œโ”€ commondir@1.0.1
โ”œโ”€ compressible@2.0.9
โ”œโ”€ compression@1.6.2
โ”œโ”€ concat-map@0.0.1
โ”œโ”€ concat-stream@1.5.2
โ”‚  โ””โ”€ readable-stream@2.0.6
โ”œโ”€ config-chain@1.1.11
โ”œโ”€ connect-history-api-fallback@1.3.0
โ”œโ”€ console-browserify@1.1.0
โ”œโ”€ console-control-strings@1.1.0
โ”œโ”€ constant-case@2.0.0
โ”œโ”€ constants-browserify@1.0.0
โ”œโ”€ contains-path@0.1.0
โ”œโ”€ content-disposition@0.5.1
โ”œโ”€ content-type@1.0.2
โ”œโ”€ conventional-changelog@0.0.17
โ”œโ”€ conventional-commit-types@2.1.0
โ”œโ”€ convert-source-map@1.3.0
โ”œโ”€ cookie-signature@1.0.6
โ”œโ”€ cookie@0.3.1
โ”œโ”€ core-js@2.4.1
โ”œโ”€ core-util-is@1.0.2
โ”œโ”€ create-ecdh@4.0.0
โ”œโ”€ create-hash@1.1.2
โ”œโ”€ create-hmac@1.1.4
โ”œโ”€ cryptiles@2.0.5
โ”œโ”€ crypto-browserify@3.11.0
โ”œโ”€ css-color-names@0.0.4
โ”œโ”€ css-loader@0.25.0
โ”œโ”€ css-select@1.0.0
โ”œโ”€ css-selector-tokenizer@0.6.0
โ”œโ”€ css-what@1.0.0
โ”œโ”€ cssesc@0.1.0
โ”œโ”€ cssnano@3.8.0
โ”‚  โ””โ”€ autoprefixer@6.5.1
โ”œโ”€ csso@2.2.1
โ”œโ”€ currently-unhandled@0.4.1
โ”œโ”€ cz-conventional-changelog@1.2.0
โ”œโ”€ d@0.1.1
โ”œโ”€ damerau-levenshtein@1.0.3
โ”œโ”€ dashdash@1.14.0
โ”‚  โ””โ”€ assert-plus@1.0.0
โ”œโ”€ date-now@0.1.4
โ”œโ”€ dateformat@1.0.12
โ”œโ”€ debug@2.2.0
โ”œโ”€ decamelize@1.2.0
โ”œโ”€ dedent@0.6.0
โ”œโ”€ deep-extend@0.4.1
โ”œโ”€ deep-is@0.1.3
โ”œโ”€ defined@1.0.0
โ”œโ”€ del@2.2.2
โ”œโ”€ delayed-stream@1.0.0
โ”œโ”€ delegates@1.0.0
โ”œโ”€ depd@1.1.0
โ”œโ”€ des.js@1.0.0
โ”œโ”€ destroy@1.0.4
โ”œโ”€ detect-indent@4.0.0
โ”œโ”€ dezalgo@1.0.3
โ”œโ”€ diffie-hellman@5.0.2
โ”œโ”€ doctrine@1.5.0
โ”œโ”€ dom-converter@0.1.4
โ”‚  โ””โ”€ utila@0.3.3
โ”œโ”€ dom-serializer@0.1.0
โ”œโ”€ domain-browser@1.1.7
โ”œโ”€ domelementtype@1.1.3
โ”œโ”€ domhandler@2.3.0
โ”‚  โ””โ”€ domelementtype@1.3.0
โ”œโ”€ domutils@1.4.3
โ”‚  โ””โ”€ domelementtype@1.3.0
โ”œโ”€ dot-case@2.1.0
โ”œโ”€ duplexer@0.1.1
โ”œโ”€ ecc-jsbn@0.1.1
โ”œโ”€ ee-first@1.1.1
โ”œโ”€ elliptic@6.3.2
โ”œโ”€ emojis-list@2.1.0
โ”œโ”€ encodeurl@1.0.1
โ”œโ”€ enhanced-resolve@0.9.1
โ”‚  โ””โ”€ memory-fs@0.2.0
โ”œโ”€ entities@1.1.1
โ”œโ”€ errno@0.1.4
โ”œโ”€ error-ex@1.3.0
โ”œโ”€ es5-ext@0.10.12
โ”œโ”€ es6-iterator@2.0.0
โ”œโ”€ es6-map@0.1.4
โ”œโ”€ es6-set@0.1.4
โ”œโ”€ es6-symbol@3.1.0
โ”œโ”€ es6-templates@0.2.3
โ”œโ”€ es6-weak-map@2.0.1
โ”œโ”€ escape-html@1.0.3
โ”œโ”€ escape-string-regexp@1.0.5
โ”œโ”€ escope@3.6.0
โ”œโ”€ eslint-config-airbnb-base@8.0.0
โ”œโ”€ eslint-config-airbnb@12.0.0
โ”œโ”€ eslint-import-resolver-node@0.2.3
โ”œโ”€ eslint-import-resolver-webpack@0.6.0
โ”‚  โ””โ”€ interpret@1.0.1
โ”œโ”€ eslint-loader@1.5.0
โ”œโ”€ eslint-plugin-import@1.16.0
โ”‚  โ””โ”€ doctrine@1.3.0
โ”œโ”€ eslint-plugin-jsx-a11y@2.2.2
โ”œโ”€ eslint-plugin-react@6.3.0
โ”œโ”€ eslint@3.7.1
โ”‚  โ”œโ”€ lodash@4.16.6
โ”‚  โ””โ”€ shelljs@0.6.1
โ”œโ”€ espree@3.3.2
โ”‚  โ””โ”€ acorn@4.0.3
โ”œโ”€ esprima@2.7.3
โ”œโ”€ esrecurse@4.1.0
โ”‚  โ””โ”€ estraverse@4.1.1
โ”œโ”€ estraverse@4.2.0
โ”œโ”€ esutils@2.0.2
โ”œโ”€ etag@1.7.0
โ”œโ”€ event-emitter@0.3.4
โ”œโ”€ event-stream@3.3.4
โ”œโ”€ eventemitter3@1.2.0
โ”œโ”€ events@1.1.1
โ”œโ”€ eventsource@0.1.6
โ”œโ”€ evp_bytestokey@1.0.0
โ”œโ”€ exit-hook@1.1.1
โ”œโ”€ expand-brackets@0.1.5
โ”œโ”€ expand-range@1.8.2
โ”œโ”€ expose-loader@0.7.1
โ”œโ”€ express@4.14.0
โ”œโ”€ extend@3.0.0
โ”œโ”€ external-editor@1.1.1
โ”œโ”€ extglob@0.3.2
โ”œโ”€ extsprintf@1.0.2
โ”œโ”€ fast-levenshtein@2.0.5
โ”œโ”€ fastparse@1.1.1
โ”œโ”€ faye-websocket@0.10.0
โ”œโ”€ figures@1.7.0
โ”œโ”€ file-entry-cache@2.0.0
โ”œโ”€ file-loader@0.9.0
โ”œโ”€ filename-regex@2.0.0
โ”œโ”€ fill-range@2.2.3
โ”œโ”€ finalhandler@0.5.0
โ”œโ”€ find-cache-dir@0.1.1
โ”œโ”€ find-node-modules@1.0.3
โ”œโ”€ find-root@0.1.2
โ”œโ”€ find-up@1.1.2
โ”‚  โ””โ”€ path-exists@2.1.0
โ”œโ”€ findup-sync@0.2.1
โ”‚  โ”œโ”€ glob@4.3.5
โ”‚  โ””โ”€ minimatch@2.0.10
โ”œโ”€ flat-cache@1.2.1
โ”œโ”€ flatten@1.0.2
โ”œโ”€ for-in@0.1.6
โ”œโ”€ for-own@0.1.4
โ”œโ”€ foreachasync@3.0.0
โ”œโ”€ forever-agent@0.6.1
โ”œโ”€ form-data@2.1.1
โ”œโ”€ forwarded@0.1.0
โ”œโ”€ fresh@0.3.0
โ”œโ”€ from@0.1.3
โ”œโ”€ fs.realpath@1.0.0
โ”œโ”€ fsevents@1.0.15
โ”œโ”€ fstream-ignore@1.0.5
โ”œโ”€ fstream@1.0.10
โ”œโ”€ function-bind@1.1.0
โ”œโ”€ gauge@1.2.7
โ”œโ”€ generate-function@2.0.0
โ”œโ”€ generate-object-property@1.2.0
โ”œโ”€ get-stdin@4.0.1
โ”œโ”€ getpass@0.1.6
โ”‚  โ””โ”€ assert-plus@1.0.0
โ”œโ”€ git-head@1.15.0
โ”œโ”€ git-refs@1.1.3
โ”œโ”€ github-url-from-git@1.4.0
โ”œโ”€ github-url-from-username-repo@1.0.2
โ”œโ”€ github@0.2.4
โ”‚  โ””โ”€ mime@1.3.4
โ”œโ”€ glob-base@0.3.0
โ”‚  โ””โ”€ is-glob@2.0.1
โ”œโ”€ glob-parent@2.0.0
โ”‚  โ””โ”€ is-glob@2.0.1
โ”œโ”€ glob@7.1.1
โ”œโ”€ globals@9.12.0
โ”œโ”€ globby@5.0.0
โ”œโ”€ graceful-fs@4.1.10
โ”œโ”€ graceful-readlink@1.0.1
โ”œโ”€ har-validator@2.0.6
โ”œโ”€ has-ansi@2.0.0
โ”œโ”€ has-color@0.1.7
โ”œโ”€ has-flag@1.0.0
โ”œโ”€ has-unicode@2.0.1
โ”œโ”€ has@1.0.1
โ”œโ”€ hash.js@1.0.3
โ”œโ”€ hawk@3.1.3
โ”œโ”€ he@1.1.0
โ”œโ”€ header-case@1.0.0
โ”œโ”€ hoek@2.16.3
โ”œโ”€ home-or-tmp@2.0.0
โ”œโ”€ hosted-git-info@2.1.5
โ”œโ”€ html-comment-regex@1.1.1
โ”œโ”€ html-loader@0.4.4
โ”‚  โ”œโ”€ async@0.2.10
โ”‚  โ”œโ”€ html-minifier@3.1.0
โ”‚  โ””โ”€ uglify-js@2.7.4
โ”œโ”€ html-minifier@2.1.7
โ”œโ”€ html-webpack-plugin@2.22.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ htmlparser2@3.8.3
โ”‚  โ”œโ”€ domelementtype@1.3.0
โ”‚  โ”œโ”€ domutils@1.5.1
โ”‚  โ”œโ”€ entities@1.0.0
โ”‚  โ”œโ”€ isarray@0.0.1
โ”‚  โ””โ”€ readable-stream@1.1.13
โ”œโ”€ http-browserify@1.7.0
โ”œโ”€ http-errors@1.5.0
โ”‚  โ””โ”€ inherits@2.0.1
โ”œโ”€ http-proxy-middleware@0.17.2
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ http-proxy@1.15.2
โ”œโ”€ http-signature@1.1.1
โ”œโ”€ https-browserify@0.0.1
โ”œโ”€ icss-replace-symbols@1.0.2
โ”œโ”€ ieee754@1.1.8
โ”œโ”€ ignore@3.2.0
โ”œโ”€ image-size@0.3.5
โ”œโ”€ imurmurhash@0.1.4
โ”œโ”€ indent-string@2.1.0
โ”œโ”€ indexes-of@1.0.1
โ”œโ”€ indexof@0.0.1
โ”œโ”€ inflight@1.0.6
โ”œโ”€ inherits@2.0.3
โ”œโ”€ ini@1.3.4
โ”œโ”€ inquirer@0.12.0
โ”‚  โ””โ”€ lodash@4.16.6
โ”œโ”€ interpret@0.6.6
โ”œโ”€ invariant@2.2.1
โ”œโ”€ ipaddr.js@1.1.1
โ”œโ”€ is-absolute-url@2.0.0
โ”œโ”€ is-absolute@0.2.6
โ”œโ”€ is-arrayish@0.2.1
โ”œโ”€ is-binary-path@1.0.1
โ”œโ”€ is-buffer@1.1.4
โ”œโ”€ is-builtin-module@1.0.0
โ”œโ”€ is-dotfile@1.0.2
โ”œโ”€ is-equal-shallow@0.1.3
โ”œโ”€ is-extendable@0.1.1
โ”œโ”€ is-extglob@1.0.0
โ”œโ”€ is-finite@1.0.2
โ”œโ”€ is-fullwidth-code-point@1.0.0
โ”œโ”€ is-glob@3.1.0
โ”‚  โ””โ”€ is-extglob@2.1.0
โ”œโ”€ is-lower-case@1.1.3
โ”œโ”€ is-my-json-valid@2.15.0
โ”œโ”€ is-number@2.1.0
โ”œโ”€ is-path-cwd@1.0.0
โ”œโ”€ is-path-in-cwd@1.0.0
โ”œโ”€ is-path-inside@1.0.0
โ”œโ”€ is-plain-obj@1.1.0
โ”œโ”€ is-posix-bracket@0.1.1
โ”œโ”€ is-primitive@2.0.0
โ”œโ”€ is-promise@2.1.0
โ”œโ”€ is-property@1.0.2
โ”œโ”€ is-relative@0.2.1
โ”œโ”€ is-resolvable@1.0.0
โ”œโ”€ is-svg@2.0.1
โ”œโ”€ is-typedarray@1.0.0
โ”œโ”€ is-unc-path@0.1.1
โ”œโ”€ is-upper-case@1.1.2
โ”œโ”€ is-utf8@0.2.1
โ”œโ”€ is-windows@0.2.0
โ”œโ”€ isarray@1.0.0
โ”œโ”€ isobject@2.1.0
โ”œโ”€ isstream@0.1.2
โ”œโ”€ jodid25519@1.0.2
โ”œโ”€ js-base64@2.1.9
โ”œโ”€ js-tokens@2.0.0
โ”œโ”€ js-yaml@3.6.1
โ”œโ”€ jsbn@0.1.0
โ”œโ”€ jsesc@1.3.0
โ”œโ”€ json-loader@0.5.4
โ”œโ”€ json-schema@0.2.3
โ”œโ”€ json-stable-stringify@1.0.1
โ”œโ”€ json-stringify-safe@5.0.1
โ”œโ”€ json3@3.3.2
โ”œโ”€ json5@0.4.0
โ”œโ”€ jsonify@0.0.0
โ”œโ”€ jsonpointer@4.0.0
โ”œโ”€ jsprim@1.3.1
โ”œโ”€ jsx-ast-utils@1.3.3
โ”œโ”€ kind-of@3.0.4
โ”œโ”€ kw-web-suite@2.2.1
โ”œโ”€ lazy-cache@1.0.4
โ”œโ”€ levn@0.3.0
โ”œโ”€ load-json-file@1.1.0
โ”‚  โ””โ”€ strip-bom@2.0.0
โ”œโ”€ loader-utils@0.2.16
โ”‚  โ””โ”€ json5@0.5.0
โ”œโ”€ lodash._baseassign@3.2.0
โ”œโ”€ lodash._basecopy@3.0.1
โ”œโ”€ lodash._baseget@3.7.2
โ”œโ”€ lodash._bindcallback@3.0.1
โ”œโ”€ lodash._createassigner@3.1.1
โ”œโ”€ lodash._createcompounder@3.0.0
โ”œโ”€ lodash._getnative@3.9.1
โ”œโ”€ lodash._isiterateecall@3.0.9
โ”œโ”€ lodash._root@3.0.1
โ”œโ”€ lodash._topath@3.8.1
โ”œโ”€ lodash.assign@3.2.0
โ”œโ”€ lodash.camelcase@3.0.1
โ”œโ”€ lodash.cond@4.5.2
โ”œโ”€ lodash.deburr@3.2.0
โ”œโ”€ lodash.endswith@4.2.1
โ”œโ”€ lodash.find@4.6.0
โ”œโ”€ lodash.findindex@4.6.0
โ”œโ”€ lodash.get@3.7.0
โ”œโ”€ lodash.indexof@4.0.5
โ”œโ”€ lodash.isarguments@3.1.0
โ”œโ”€ lodash.isarray@3.0.4
โ”œโ”€ lodash.keys@3.1.2
โ”œโ”€ lodash.map@4.6.0
โ”œโ”€ lodash.pad@4.5.1
โ”œโ”€ lodash.padend@4.6.1
โ”œโ”€ lodash.padstart@4.6.1
โ”œโ”€ lodash.pickby@4.6.0
โ”œโ”€ lodash.restparam@3.6.1
โ”œโ”€ lodash.words@3.2.0
โ”œโ”€ lodash@3.10.1
โ”œโ”€ longest@1.0.1
โ”œโ”€ loose-envify@1.3.0
โ”œโ”€ loud-rejection@1.6.0
โ”œโ”€ lower-case-first@1.0.2
โ”œโ”€ lower-case@1.1.3
โ”œโ”€ macaddress@0.2.8
โ”œโ”€ map-obj@1.0.1
โ”œโ”€ map-stream@0.1.0
โ”œโ”€ math-expression-evaluator@1.2.14
โ”œโ”€ media-typer@0.3.0
โ”œโ”€ memory-fs@0.3.0
โ”œโ”€ meow@3.7.0
โ”‚  โ””โ”€ normalize-package-data@2.3.5
โ”œโ”€ merge-descriptors@1.0.1
โ”œโ”€ merge@1.2.0
โ”œโ”€ methods@1.1.2
โ”œโ”€ micromatch@2.3.11
โ”‚  โ””โ”€ is-glob@2.0.1
โ”œโ”€ miller-rabin@4.0.0
โ”œโ”€ mime-db@1.24.0
โ”œโ”€ mime-types@2.1.12
โ”œโ”€ mime@1.2.11
โ”œโ”€ minimalistic-assert@1.0.0
โ”œโ”€ minimatch@3.0.3
โ”œโ”€ minimist@1.2.0
โ”œโ”€ mkdirp@0.5.1
โ”‚  โ””โ”€ minimist@0.0.8
โ”œโ”€ ms@0.7.1
โ”œโ”€ mute-stream@0.0.6
โ”œโ”€ nan@2.4.0
โ”œโ”€ natural-compare@1.4.0
โ”œโ”€ ncname@1.0.0
โ”œโ”€ negotiator@0.6.1
โ”œโ”€ nerf-dart@1.0.0
โ”œโ”€ no-case@2.3.0
โ”œโ”€ node-libs-browser@1.0.0
โ”œโ”€ node-pre-gyp@0.6.31
โ”‚  โ”œโ”€ are-we-there-yet@1.1.2
โ”‚  โ”œโ”€ gauge@2.6.0
โ”‚  โ””โ”€ npmlog@4.0.0
โ”œโ”€ node-uuid@1.4.7
โ”œโ”€ nopt@3.0.6
โ”œโ”€ normalize-package-data@1.0.3
โ”‚  โ””โ”€ semver@4.3.6
โ”œโ”€ normalize-path@2.0.1
โ”œโ”€ normalize-range@0.1.2
โ”œโ”€ normalize-url@1.7.0
โ”œโ”€ npm-package-arg@4.2.0
โ”œโ”€ npm-registry-client@7.3.0
โ”‚  โ”œโ”€ are-we-there-yet@1.1.2
โ”‚  โ”œโ”€ gauge@2.6.0
โ”‚  โ”œโ”€ normalize-package-data@2.3.5
โ”‚  โ””โ”€ npmlog@3.1.2
โ”œโ”€ npmconf@2.1.2
โ”‚  โ”œโ”€ once@1.3.3
โ”‚  โ””โ”€ semver@4.3.6
โ”œโ”€ npmlog@1.2.1
โ”œโ”€ nth-check@1.0.1
โ”œโ”€ num2fraction@1.2.2
โ”œโ”€ number-is-nan@1.0.1
โ”œโ”€ oauth-sign@0.8.2
โ”œโ”€ object-assign@4.1.0
โ”œโ”€ object.omit@2.0.1
โ”œโ”€ on-finished@2.3.0
โ”œโ”€ on-headers@1.0.1
โ”œโ”€ once@1.4.0
โ”œโ”€ onetime@1.1.0
โ”œโ”€ open@0.0.5
โ”œโ”€ optimist@0.6.1
โ”‚  โ””โ”€ minimist@0.0.10
โ”œโ”€ optionator@0.8.2
โ”‚  โ””โ”€ wordwrap@1.0.0
โ”œโ”€ original@1.0.0
โ”‚  โ””โ”€ url-parse@1.0.5
โ”œโ”€ os-browserify@0.2.1
โ”œโ”€ os-homedir@1.0.2
โ”œโ”€ os-shim@0.1.3
โ”œโ”€ os-tmpdir@1.0.2
โ”œโ”€ osenv@0.1.3
โ”œโ”€ pad-right@0.2.2
โ”œโ”€ pako@0.2.9
โ”œโ”€ param-case@2.1.0
โ”œโ”€ parse-asn1@5.0.0
โ”œโ”€ parse-github-repo-url@1.3.0
โ”œโ”€ parse-glob@3.0.4
โ”‚  โ””โ”€ is-glob@2.0.1
โ”œโ”€ parse-json@2.2.0
โ”œโ”€ parseurl@1.3.1
โ”œโ”€ pascal-case@2.0.0
โ”œโ”€ path-browserify@0.0.0
โ”œโ”€ path-case@2.1.0
โ”œโ”€ path-exists@1.0.0
โ”œโ”€ path-is-absolute@1.0.1
โ”œโ”€ path-is-inside@1.0.2
โ”œโ”€ path-object@2.3.0
โ”œโ”€ path-to-regexp@0.1.7
โ”œโ”€ path-type@1.1.0
โ”œโ”€ pause-stream@0.0.11
โ”œโ”€ pbkdf2-compat@2.0.1
โ”œโ”€ pbkdf2@3.0.9
โ”œโ”€ pify@2.3.0
โ”œโ”€ pinkie-promise@2.0.1
โ”œโ”€ pinkie@2.0.4
โ”œโ”€ pkg-dir@1.0.0
โ”œโ”€ pkg-up@1.0.0
โ”œโ”€ pluralize@1.2.1
โ”œโ”€ postcss-calc@5.3.1
โ”œโ”€ postcss-colormin@2.2.1
โ”œโ”€ postcss-convert-values@2.4.1
โ”œโ”€ postcss-discard-comments@2.0.4
โ”œโ”€ postcss-discard-duplicates@2.0.1
โ”œโ”€ postcss-discard-empty@2.1.0
โ”œโ”€ postcss-discard-overridden@0.1.1
โ”œโ”€ postcss-discard-unused@2.2.2
โ”œโ”€ postcss-filter-plugins@2.0.2
โ”œโ”€ postcss-loader@0.13.0
โ”œโ”€ postcss-merge-idents@2.1.7
โ”œโ”€ postcss-merge-longhand@2.0.1
โ”œโ”€ postcss-merge-rules@2.0.10
โ”œโ”€ postcss-message-helpers@2.0.0
โ”œโ”€ postcss-minify-font-values@1.0.5
โ”œโ”€ postcss-minify-gradients@1.0.5
โ”œโ”€ postcss-minify-params@1.0.5
โ”œโ”€ postcss-minify-selectors@2.0.5
โ”œโ”€ postcss-modules-extract-imports@1.0.1
โ”œโ”€ postcss-modules-local-by-default@1.1.1
โ”œโ”€ postcss-modules-scope@1.0.2
โ”œโ”€ postcss-modules-values@1.2.2
โ”œโ”€ postcss-normalize-charset@1.1.0
โ”œโ”€ postcss-normalize-url@3.0.7
โ”œโ”€ postcss-ordered-values@2.2.2
โ”œโ”€ postcss-reduce-idents@2.3.1
โ”œโ”€ postcss-reduce-initial@1.0.0
โ”œโ”€ postcss-reduce-transforms@1.0.4
โ”œโ”€ postcss-selector-parser@2.2.1
โ”œโ”€ postcss-svgo@2.1.5
โ”œโ”€ postcss-unique-selectors@2.0.2
โ”œโ”€ postcss-value-parser@3.3.0
โ”œโ”€ postcss-zindex@2.1.1
โ”œโ”€ postcss@5.2.5
โ”œโ”€ prelude-ls@1.1.2
โ”œโ”€ prepend-http@1.0.4
โ”œโ”€ preserve@0.2.0
โ”œโ”€ pretty-error@2.0.2
โ”œโ”€ private@0.1.6
โ”œโ”€ process-nextick-args@1.0.7
โ”œโ”€ process@0.11.9
โ”œโ”€ progress@1.1.8
โ”œโ”€ proto-list@1.2.4
โ”œโ”€ proxy-addr@1.1.2
โ”œโ”€ prr@0.0.0
โ”œโ”€ public-encrypt@4.0.0
โ”œโ”€ punycode@1.4.1
โ”œโ”€ q@1.4.1
โ”œโ”€ qs@6.2.0
โ”œโ”€ query-string@4.2.3
โ”œโ”€ querystring-es3@0.2.1
โ”œโ”€ querystring@0.2.0
โ”œโ”€ querystringify@0.0.4
โ”œโ”€ randomatic@1.1.5
โ”œโ”€ randombytes@2.0.3
โ”œโ”€ range-parser@1.2.0
โ”œโ”€ rc@1.1.6
โ”œโ”€ read-pkg-up@1.0.1
โ”œโ”€ read-pkg@1.1.0
โ”‚  โ””โ”€ normalize-package-data@2.3.5
โ”œโ”€ readable-stream@2.1.5
โ”œโ”€ readdirp@2.1.0
โ”œโ”€ readline2@1.0.1
โ”‚  โ””โ”€ mute-stream@0.0.5
โ”œโ”€ recast@0.11.15
โ”‚  โ””โ”€ esprima@3.1.1
โ”œโ”€ rechoir@0.6.2
โ”œโ”€ redent@1.0.0
โ”œโ”€ reduce-css-calc@1.3.0
โ”œโ”€ reduce-function-call@1.0.1
โ”‚  โ””โ”€ balanced-match@0.1.0
โ”œโ”€ regenerate@1.3.1
โ”œโ”€ regenerator-runtime@0.9.5
โ”œโ”€ regex-cache@0.4.3
โ”œโ”€ regexpu-core@1.0.0
โ”œโ”€ regjsgen@0.2.0
โ”œโ”€ regjsparser@0.1.5
โ”‚  โ””โ”€ jsesc@0.5.0
โ”œโ”€ relateurl@0.2.7
โ”œโ”€ renderkid@2.0.0
โ”‚  โ”œโ”€ css-select@1.2.0
โ”‚  โ”‚  โ””โ”€ domutils@1.5.1
โ”‚  โ”œโ”€ css-what@2.1.0
โ”‚  โ”œโ”€ domelementtype@1.3.0
โ”‚  โ”œโ”€ domhandler@2.1.0
โ”‚  โ”œโ”€ domutils@1.1.6
โ”‚  โ”œโ”€ htmlparser2@3.3.0
โ”‚  โ”œโ”€ isarray@0.0.1
โ”‚  โ”œโ”€ readable-stream@1.0.34
โ”‚  โ””โ”€ utila@0.3.3
โ”œโ”€ repeat-element@1.1.2
โ”œโ”€ repeat-string@1.6.1
โ”œโ”€ repeating@2.0.1
โ”œโ”€ request@2.77.0
โ”‚  โ””โ”€ qs@6.3.0
โ”œโ”€ require-relative@0.8.7
โ”œโ”€ require-uncached@1.0.2
โ”œโ”€ requires-port@1.0.0
โ”œโ”€ resolve-from@1.0.1
โ”œโ”€ resolve@1.1.7
โ”œโ”€ restore-cursor@1.0.1
โ”œโ”€ retry@0.10.0
โ”œโ”€ right-align@0.1.3
โ”œโ”€ right-pad@1.0.1
โ”œโ”€ rimraf@2.5.4
โ”œโ”€ ripemd160@1.0.1
โ”œโ”€ run-async@0.1.0
โ”œโ”€ run-auto@1.1.3
โ”œโ”€ run-series@1.1.4
โ”œโ”€ rx-lite@3.1.2
โ”œโ”€ rx@4.1.0
โ”œโ”€ sax@1.2.1
โ”œโ”€ semantic-release@4.3.5
โ”œโ”€ semver@5.3.0
โ”œโ”€ send@0.14.1
โ”‚  โ””โ”€ mime@1.3.4
โ”œโ”€ sentence-case@2.1.0
โ”œโ”€ serve-index@1.8.0
โ”œโ”€ serve-static@1.11.1
โ”œโ”€ set-blocking@2.0.0
โ”œโ”€ set-immediate-shim@1.0.1
โ”œโ”€ setprototypeof@1.0.1
โ”œโ”€ sha.js@2.4.5
โ”œโ”€ shader-loader@1.3.0
โ”œโ”€ shebang-regex@1.0.0
โ”œโ”€ shelljs@0.7.4
โ”‚  โ””โ”€ interpret@1.0.1
โ”œโ”€ signal-exit@3.0.1
โ”œโ”€ slash@1.0.0
โ”œโ”€ slice-ansi@0.0.4
โ”œโ”€ slide@1.1.6
โ”œโ”€ snake-case@2.1.0
โ”œโ”€ sniffr@1.1.4
โ”œโ”€ sntp@1.0.9
โ”œโ”€ sockjs-client@1.1.1
โ”‚  โ””โ”€ faye-websocket@0.11.0
โ”œโ”€ sockjs@0.3.18
โ”œโ”€ sort-keys@1.1.2
โ”œโ”€ source-list-map@0.1.6
โ”œโ”€ source-map-support@0.4.6
โ”œโ”€ source-map@0.5.6
โ”œโ”€ spawn-sync@1.0.15
โ”œโ”€ spdx-correct@1.0.2
โ”œโ”€ spdx-expression-parse@1.0.4
โ”œโ”€ spdx-license-ids@1.2.2
โ”œโ”€ split@0.3.3
โ”œโ”€ sprintf-js@1.0.3
โ”œโ”€ sshpk@1.10.1
โ”‚  โ””โ”€ assert-plus@1.0.0
โ”œโ”€ statuses@1.3.0
โ”œโ”€ stream-browserify@2.0.1
โ”œโ”€ stream-cache@0.0.2
โ”œโ”€ stream-combiner@0.0.4
โ”œโ”€ strict-uri-encode@1.1.0
โ”œโ”€ string_decoder@0.10.31
โ”œโ”€ string-replace-loader@1.0.5
โ”œโ”€ string-width@1.0.2
โ”œโ”€ stringstream@0.0.5
โ”œโ”€ strip-ansi@3.0.1
โ”œโ”€ strip-bom@3.0.0
โ”œโ”€ strip-indent@1.0.1
โ”œโ”€ strip-json-comments@1.0.4
โ”œโ”€ style-loader@0.13.1
โ”œโ”€ supports-color@3.1.2
โ”œโ”€ svg-sprite-loader@0.0.29
โ”œโ”€ svgo@0.7.1
โ”œโ”€ swap-case@1.1.2
โ”œโ”€ table@3.8.3
โ”‚  โ”œโ”€ is-fullwidth-code-point@2.0.0
โ”‚  โ”œโ”€ lodash@4.16.6
โ”‚  โ””โ”€ string-width@2.0.0
โ”œโ”€ tapable@0.1.10
โ”œโ”€ tar-pack@3.3.0
โ”‚  โ”œโ”€ once@1.3.3
โ”‚  โ””โ”€ uid-number@0.0.6
โ”œโ”€ tar@2.2.1
โ”œโ”€ text-table@0.2.0
โ”œโ”€ through@2.3.8
โ”œโ”€ timers-browserify@1.4.2
โ”œโ”€ title-case@2.1.0
โ”œโ”€ tmp@0.0.29
โ”œโ”€ to-fast-properties@1.0.2
โ”œโ”€ toposort@1.0.0
โ”œโ”€ tough-cookie@2.3.2
โ”œโ”€ trim-newlines@1.0.0
โ”œโ”€ tryit@1.0.3
โ”œโ”€ tty-browserify@0.0.0
โ”œโ”€ tunnel-agent@0.4.3
โ”œโ”€ tweetnacl@0.14.3
โ”œโ”€ type-check@0.3.2
โ”œโ”€ type-is@1.6.13
โ”œโ”€ typedarray@0.0.6
โ”œโ”€ uglify-js@2.6.4
โ”‚  โ””โ”€ async@0.2.10
โ”œโ”€ uglify-to-browserify@1.0.2
โ”œโ”€ uid-number@0.0.5
โ”œโ”€ unc-path-regex@0.1.2
โ”œโ”€ uniq@1.0.1
โ”œโ”€ uniqid@4.1.0
โ”œโ”€ uniqs@2.0.0
โ”œโ”€ unpipe@1.0.0
โ”œโ”€ upper-case-first@1.1.2
โ”œโ”€ upper-case@1.1.3
โ”œโ”€ url-loader@0.5.7
โ”œโ”€ url-parse@1.1.7
โ”œโ”€ url@0.11.0
โ”‚  โ””โ”€ punycode@1.3.2
โ”œโ”€ user-home@2.0.0
โ”œโ”€ util-deprecate@1.0.2
โ”œโ”€ util@0.10.3
โ”‚  โ””โ”€ inherits@2.0.1
โ”œโ”€ utila@0.4.0
โ”œโ”€ utils-merge@1.0.0
โ”œโ”€ uuid@2.0.3
โ”œโ”€ validate-npm-package-license@3.0.1
โ”œโ”€ vary@1.1.0
โ”œโ”€ vendors@1.0.1
โ”œโ”€ verror@1.3.6
โ”œโ”€ vm-browserify@0.0.4
โ”œโ”€ walk@2.3.9
โ”œโ”€ watchpack@0.2.9
โ”‚  โ””โ”€ async@0.9.2
โ”œโ”€ webpack-core@0.6.8
โ”‚  โ””โ”€ source-map@0.4.4
โ”œโ”€ webpack-dev-middleware@1.8.4
โ”‚  โ””โ”€ mime@1.3.4
โ”œโ”€ webpack-dev-server@1.16.2
โ”œโ”€ webpack@1.13.2
โ”‚  โ”œโ”€ constants-browserify@0.0.1
โ”‚  โ”œโ”€ crypto-browserify@3.2.8
โ”‚  โ”œโ”€ https-browserify@0.0.0
โ”‚  โ”œโ”€ isarray@0.0.1
โ”‚  โ”œโ”€ node-libs-browser@0.6.0
โ”‚  โ”œโ”€ os-browserify@0.1.2
โ”‚  โ”œโ”€ readable-stream@1.1.14
โ”‚  โ”œโ”€ ripemd160@0.2.0
โ”‚  โ”œโ”€ sha.js@2.2.6
โ”‚  โ”œโ”€ stream-browserify@1.0.0
โ”‚  โ””โ”€ url@0.10.3
โ”‚  โ”‚  โ””โ”€ punycode@1.3.2
โ”œโ”€ websocket-driver@0.6.5
โ”œโ”€ websocket-extensions@0.1.1
โ”œโ”€ whet.extend@0.9.9
โ”œโ”€ wide-align@1.1.0
โ”œโ”€ window-size@0.1.0
โ”œโ”€ word-wrap@1.1.0
โ”œโ”€ wordwrap@0.0.3
โ”œโ”€ wrappy@1.0.2
โ”œโ”€ write@0.2.1
โ”œโ”€ xml-char-classes@1.0.0
โ”œโ”€ xtend@4.0.1
โ””โ”€ yargs@3.10.0
โœจ  Done in 15.29s.

$ ls node_modules/.bin/
fix-kw-web-suite

$ ls node_modules/kw-web-suite/node_modules/.bin/
commitizen      eslint          git-cz          semantic-release    shjs            webpack         webpack-dev-server
wyze commented

@jourdain The PR that fixed this just landed an hour ago and there hasn't been a release, so the current version is still going to be broken until a new release is cut.

Sounds good, I wasn't sure when I should be able to test the new version. So I'm guessing yarn@0.16.2 ?

#1220 was reverted. Shouldn't this issue be re-opened?
As of yarn 17.8 nested exes are not installing in the root ./node_modules/.bin

I've tried the steps to reproduce that bug with yarn@0.17.8 and I confirm that we still see the same behavior.

This should be reopen.

wyze commented

I'll reopen this since the PR was reverted.

Sorry but this bug is still present in last nightly-build : 0.19.0

Scenario for reproducing the bug :

The file node_modules/.bin/ngd is not present

The file node_modules/.bin/ngd is present

There's an open (but possibly abandoned) PR for a new fix: #2053

Any progress on this issue? yarn@0.24.6 still have this problem.

BYK commented

@zyy7259 not AFAIK. Would you like to investigate with the latest version on master and submit a pull request? We'd assist you in the process if you're interested in submitting a PR.

@BYK AFAIK this was actually fixed in #3310 back in may, and is working for me with v0.27.5, can this be closed?

Seems to be fine with me now, I would say you can close the issue. Thanks for taking care of it!

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.12.6
BuildVersion:	16G29
$ node --version
v8.0.0
$ yarn --version
0.27.5