4
ltlian
4y

The adventurous world of javascript and typescript never ceases to amaze me.

I'm investigating some paths to take for migrating this legacy project which has incurred some technical debt. Because of... reasons... even the frontend Vue project needs to be built on a Windows system. No, you can take your hands down, even wsl or docker aren't alternatives here. It's a long story and ties in with said debt.

I'm keen on rebooting the entire frontend using a newer Vue cli and scaffold up all the essentials like eslint and typescript which is currently not used. This is gonna be sweet.

Except, typescript (BY Microsoft) doesn't play well on a Windows (BY Microsoft) filesystem because of a recent change to support - get this - wsl. I can't decide if it's hilariously ironic or genius.

This response about sums up my current mood. https://github.com/Microsoft/...

Of course, further digging in other repos like node only turns up issues closed due to it being on Windows' end.

So now my readme has a troubleshooting section describing how to make changes to your filesystem if you run into issues in Windows and I want to go home.

Comments
  • 2
    Ntfs has always been a bit of a snowflake. The windows team has been reduced and cost-cut into the ground. This is just a symptom of that.

    It's also worth noting that 54% of developer machines are now *nix, and in typescript-heavy workflows, it's closer to 70%.
  • 2
    It's stupid and confusing at best to have two different files whose names only differ in case, even on case sensitive file systems.

    On the other hand, a case insensitive file system also sucks because with i18n, it's not always clear what upper / lower case even means, and it makes the file system code messier for no good reason.
  • 2
    @Fast-Nop
    "On the other hand, case-insensitive filesystems suck."

    Fixed that for you 😘
  • 2
    @SortOfTested The issue has decades of history.

    CP/M had a case sensitive file system underneath, but converted everything to upper case because there were old 8 bit computers with cheap keyboards that only had upper case keys.

    Then along came QDOS which built upon CP/M, and MS just bought QDOS when IBM reached out for them because IBM wanted to have shit quickly. So that became MS-DOS.

    And then MS went for NTFS with Windows NT, but they needed to stay compatible with existing applications because customers don't accept new systems breaking their shit, so that had to become case insensitive, too.

    Means, the current Typescript issue is caused by cheap 8 bit computer keyboards in the 1970s.
  • 1
    @Fast-Nop
    Yep, I lived that shit. You could have a bar trivia game based entirely on whether or not some odd, legacy bullshit is caused by Ntfs or the windows file API.

    For those wondering what the issue is, NTFS is only case sensitive if you tell it to be, and only on a per-directory basis (double fuck MS for not fixing the api character limit).

    By default Derp.js and derp.js are treated as the same file. So if you have stale files or references in a build, it can cause the wrong casing to perpetuate. If you change anything that changes file casing (including imports) you need to do a clean build.
  • 0
    @SortOfTested OTOH, "make" should have educated people to always do a full rebuild if they want to be sure that shit actually works. ^^
Add Comment