TypeScript-Call-Graph icon indicating copy to clipboard operation
TypeScript-Call-Graph copied to clipboard

doesn't work with yarn due to CRLF line-ending

Open ensconced opened this issue 4 years ago • 10 comments

steps to reproduce the issue:

  • on macOS, make a new yarn project with yarn init -y
  • yarn add typescript-call-graph
  • yarn run tcg
  • this results in an error: env: node\r: No such file or directory

There's some discussion here https://github.com/yarnpkg/yarn/issues/5480

ensconced avatar Apr 09 '21 21:04 ensconced

One option would be to use prettier, which by default always uses unix-style line endings https://prettier.io/docs/en/options.html#end-of-line

Would you accept a PR adding prettier to the codebase?

ensconced avatar Apr 09 '21 21:04 ensconced

Sounds good! Thank you - I will accept a PR that adds prettier (and any fixes to the CRLF line-endings).

I wonder if it's because I used Windows to do my coding 😅 … I found this claim:

in Windows both a CR and LF are required to note the end of a line

It's pretty bizarre that yarn can't handle something that's rather ubiquitous 🤔

I guess another approach is to re-save whatever files necessary replacing CRLF with whatever yarn wants 🤷 -- whatever is easiest for you - thanks! 😁

Would also be great if you happen to be able to check if it still works on Windows before you create the PR 👍 but I could check too - just let me know.

whyboris avatar Apr 09 '21 23:04 whyboris

I've had a closer look and the line-endings are actually fine (i.e. unix-style) in the source code so prettier won't help us here.

I think what's happening is that you have core.autocrlf = true in your git config (this is common for Windows) meaning when you check out the project, git will turn all the line endings into CRLFs in your working tree even if they are LFs in the repo in .git.

npm publish will publish whatever is in your working directory so when I yarn add your project I end up with the CRLFs (whereas npm install automatically changes them to LFs).

I think the best solution is to add a .gitattributes file to prevent git from using CRLFs in the working directory. I think that will override your local configuration.

ensconced avatar Apr 10 '21 07:04 ensconced

opened a PR 🤞 https://github.com/whyboris/TypeScript-Call-Graph/pull/10

ensconced avatar Apr 10 '21 12:04 ensconced

@whyboris just wondering whether you had time to take a look at this - let me know if you have any questions about it or don't think it's the right solution.

ensconced avatar Apr 19 '21 19:04 ensconced

Sorry for the delay - busy weeks for me - I'm packing and getting ready to move to a new house 😅 I'll try to find time this week 🤝

whyboris avatar Apr 19 '21 21:04 whyboris

Sorry for the delay - busy weeks for me - I'm packing and getting ready to move to a new house 😅 I'll try to find time this week 🤝

cool, just checking no rush 🙂

ensconced avatar Apr 20 '21 15:04 ensconced

Hi here 👋 First of all, thanks a lot for this nice tool! Liking the project a lot :) However, I've been running into the same issue as @ensconced lately and I am curious if there's any chance for #10 to be reviewed? For now, I managed to solve the issue by replacing the line endings locally, but a more stable solution would be great 😊

For anyone interested, this worked for me to bypass the issue. I've edited the line endings on the installed tcg like this using vim:

# Make sure `tcg` is installed globally.
# $ npm i -g typescript-call-graph
$ vim $(which tcg)
  #!/usr/bin/env node
  "use strict";
  exports.__esModule = true;
  var open = require("open");
  ...
# now in VIM command mode
# first set all line endings to the DOS format to avoid mixed endings
:e ++ff=dos 
# change the line endings to a UNIX format
:set ++ff=unix
# save the file and quit
:wq

If tcg is installed in project-specific node_modules, it is also possible to apply the same fix to the node_modules/typescript-call-graph/bin/index.js file. Of course, besides VIM other editors can do the same trick, and many people have been suggesting using a separate tool dos2unix.

(Approach credits to this unix.stackexchange post 🙂 )

Hope this helps anyone. Cheers ✌️

dee-me-tree-or-love avatar Jul 25 '22 11:07 dee-me-tree-or-love

I've been away from personal coding projects for most of the last year 😓 -- moving to a new state and fixing up the house has been time consuming 😅

I'll try to get back to coding in August (in a few weeks) - I really should have merged #10 earlier 🙇

whyboris avatar Jul 25 '22 14:07 whyboris

@whyboris thanks for the response! :) No worries at all, I can imagine the feeling! ✌️ Of course take your time! :)

dee-me-tree-or-love avatar Jul 26 '22 10:07 dee-me-tree-or-love