whyboris / TypeScript-Call-Graph

CLI to generate an interactive graph of functions and calls from your TypeScript files
MIT License
233 stars 20 forks source link

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

Open ensconced opened 3 years ago

ensconced commented 3 years ago

steps to reproduce the issue:

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

ensconced commented 3 years ago

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?

whyboris commented 3 years ago

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.

ensconced commented 3 years ago

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 commented 3 years ago

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

ensconced commented 3 years ago

@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.

whyboris commented 3 years ago

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 🤝

ensconced commented 3 years ago

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 🙂

dee-me-tree-or-love commented 2 years ago

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 ✌️

whyboris commented 2 years ago

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 🙇

dee-me-tree-or-love commented 2 years ago

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