Stale TypeScript Files
Summary
Sometimes when you delete a typescript file with a test or change a file into a filder (eg. utils.ts -> utils/index.ts), you might encounter failures during ci/cd (or locally) where old files are still being tested.
Context
The reason you have to go through these steps is because typescript doesn't delete the original file after you convert it to a folder.
For example, when converting utils.ts to utils/index.ts, the following occurs:
- the original
utils.jswill stay behind in theliblibrary - javascript, when it finds both
utils.jsandutils/index.js, will import from the former - you will get a mysterious compiler error
Steps
Fix Locally
- run
yarn cleanin the package where this conversion is taing place - run
yarn bootstrapto re-link dependencies - run
yarn buildto build dependencies
Fix in pipeline
- Append a number to the cache key of Restore typescript lib cache (Private)
Example
Lets say you make this conversion in plugin-core. You would run the following commands to clear this for your build
lerna exec --scope @dendronhq/plugin-core -- yarn clean
lerna bootstrap
lerna exec --scope @dendronhq/plugin-core -- yarn build
The update to ci.yml would be the following (assumming that the previous suffix was -1)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8fe8e5229..091a53d3f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -79,9 +79,9 @@ jobs:
with:
path: |
packages/*/lib/*
- key: ${{ runner.os }}-${{ hashFiles('yarn.lock') }}-1
+ key: ${{ runner.os }}-${{ hashFiles('yarn.lock') }}-2
restore-keys: |
- ${{ runner.os }}-yarn-1
+ ${{ runner.os }}-yarn-2
- name: Sets env vars for publish test
run: |
Backlinks