Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ensconced opened this issue Apr 9, 2021 · 10 comments · May be fixed by #10
Open

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

ensconced opened this issue Apr 9, 2021 · 10 comments · May be fixed by #10

Comments

@ensconced
Copy link

ensconced commented Apr 9, 2021

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 yarnpkg/yarn#5480

@ensconced
Copy link
Author

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
Copy link
Owner

whyboris commented Apr 9, 2021

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
Copy link
Author

ensconced commented Apr 10, 2021

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 added a commit to ensconced/TypeScript-Call-Graph that referenced this issue Apr 10, 2021
this ensures that the bin scripts in the published package are unix-compatible
@ensconced
Copy link
Author

opened a PR 🤞
#10

@ensconced ensconced linked a pull request Apr 10, 2021 that will close this issue
@ensconced
Copy link
Author

ensconced commented Apr 19, 2021

@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
Copy link
Owner

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
Copy link
Author

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
Copy link

dee-me-tree-or-love commented Jul 25, 2022

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
Copy link
Owner

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
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants