- today I'm gonna update the Sass website to use the standard Sass TypeScript linter config
- I want to modify the config a bit but it's a pain to update across all three Sass TypeScript repos
- it's probably time to stop copy-pasting and pull it into a shared package
- I'll put it in a package in the Dart Sass repo, just like we do with the shared Dart config
- we've got a TypeScript package in there so I'll link them together with a
file:dependency - turns out npm doesn't install transitive dependencies through
file: - this breaks my entire CI flow. shit
- okay well everyone knows npm is the worst, no surprise there
- Yarn is supposed to support a flat dependency structure, right?
- converting to Yarn isn't that bad as it turns out
- Yarn installs transitive dependencies through
file:, hooray! - but it doesn't handle symlinks through
file:, which breaks my entire dev flow. shit - all is not lost. Yarn "workspaces" allow me to declare a bunch of interdependent packages in one repo that all get symlinked together
- okay this kinda mostly works, everything is symlinked where it should be, let's try running the linter
- no output, exit code 1. shit
- turns out it's reported upstream but closed as "cannot reproduce"
- guess I'll fucking dive in and see why I can reproduce
- it's failing with no output because of a
catch (e) { return false; }, of course - add a
console.error()to discover that the linter wrapper can't findeslint - turns out Yarn doesn't add sibling executables to PATH anymore
- why? who knows! it's not documented anywhere
- guess I'm just copy-pasting linter configs around until some aspect of this gets fixed
