diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index c1192929a3..13f6f6378e 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -25,6 +25,15 @@ jobs: with: node-version: ${{ matrix.node-version }} + - name: Cache node_modules + id: cache-node-modules + uses: actions/cache@v2 + with: + # If no package-locks or the main package.json have changed, it should be safe to restore all node_modules as they were + # Changing the main package.json may change the postinstall scripts, so it should be unchanged to cache install results + path: '**/node_modules' + key: ${{ runner.os }}-modules-${{ hashFiles('**/package-lock.json', 'package.json') }} + - name: Cache npm cache uses: actions/cache@v2 env: @@ -39,16 +48,20 @@ jobs: ${{ runner.os }}-build- ${{ runner.os }}- - - name: Cache eslint cache + - name: Cache linter caches uses: actions/cache@v2 with: - path: '**/.eslintcache' - key: ${{ runner.os }}-eslintcache-${{ github.head_ref }} + path: | + '**/.eslintcache' + '**/.stylelintcache' + key: ${{ runner.os }}-lintcache-${{ github.head_ref }} restore-keys: | - ${{ runner.os }}-eslintcache- + ${{ runner.os }}-lintcache- ${{ runner.os }}- + # Only need to install and bootstrap deps if package-locks changed - name: Install dependencies + if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci - name: Test diff --git a/package.json b/package.json index 3baabe2df3..d623e73059 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "clean:build": "lerna run clean --stream", "clean:modules": "lerna clean --yes", "clean": "npm run clean:build && npm run clean:modules", - "bootstrap": "lerna bootstrap", + "bootstrap": "lerna bootstrap --hoist -- --no-audit --prefer-offline", "build": "lerna run build --stream", "build:app": "lerna run --scope=@deephaven/code-studio build", "build:packages": "lerna run --ignore=@deephaven/code-studio build --stream", diff --git a/packages/code-studio/src/test/eslint.test.js b/packages/code-studio/src/test/eslint.test.js index 71f1aea06a..a1d95f0641 100644 --- a/packages/code-studio/src/test/eslint.test.js +++ b/packages/code-studio/src/test/eslint.test.js @@ -7,6 +7,7 @@ it('eslint', async () => { const eslint = new ESLint({ extensions: ['js', 'jsx', 'ts', 'tsx'], cache: true, + cacheStrategy: 'content', }); const results = await eslint.lintFiles('./src'); const formatter = await eslint.loadFormatter(); diff --git a/packages/components/src/test/eslint.test.js b/packages/components/src/test/eslint.test.js index 71f1aea06a..a1d95f0641 100644 --- a/packages/components/src/test/eslint.test.js +++ b/packages/components/src/test/eslint.test.js @@ -7,6 +7,7 @@ it('eslint', async () => { const eslint = new ESLint({ extensions: ['js', 'jsx', 'ts', 'tsx'], cache: true, + cacheStrategy: 'content', }); const results = await eslint.lintFiles('./src'); const formatter = await eslint.loadFormatter(); diff --git a/packages/jsapi-shim/src/test/eslint.test.js b/packages/jsapi-shim/src/test/eslint.test.js index 71f1aea06a..a1d95f0641 100644 --- a/packages/jsapi-shim/src/test/eslint.test.js +++ b/packages/jsapi-shim/src/test/eslint.test.js @@ -7,6 +7,7 @@ it('eslint', async () => { const eslint = new ESLint({ extensions: ['js', 'jsx', 'ts', 'tsx'], cache: true, + cacheStrategy: 'content', }); const results = await eslint.lintFiles('./src'); const formatter = await eslint.loadFormatter(); diff --git a/packages/log/src/test/eslint.test.js b/packages/log/src/test/eslint.test.js index 71f1aea06a..a1d95f0641 100644 --- a/packages/log/src/test/eslint.test.js +++ b/packages/log/src/test/eslint.test.js @@ -7,6 +7,7 @@ it('eslint', async () => { const eslint = new ESLint({ extensions: ['js', 'jsx', 'ts', 'tsx'], cache: true, + cacheStrategy: 'content', }); const results = await eslint.lintFiles('./src'); const formatter = await eslint.loadFormatter(); diff --git a/packages/react-hooks/src/test/eslint.test.js b/packages/react-hooks/src/test/eslint.test.js index 71f1aea06a..a1d95f0641 100644 --- a/packages/react-hooks/src/test/eslint.test.js +++ b/packages/react-hooks/src/test/eslint.test.js @@ -7,6 +7,7 @@ it('eslint', async () => { const eslint = new ESLint({ extensions: ['js', 'jsx', 'ts', 'tsx'], cache: true, + cacheStrategy: 'content', }); const results = await eslint.lintFiles('./src'); const formatter = await eslint.loadFormatter(); diff --git a/packages/utils/src/test/eslint.test.js b/packages/utils/src/test/eslint.test.js index 71f1aea06a..a1d95f0641 100644 --- a/packages/utils/src/test/eslint.test.js +++ b/packages/utils/src/test/eslint.test.js @@ -7,6 +7,7 @@ it('eslint', async () => { const eslint = new ESLint({ extensions: ['js', 'jsx', 'ts', 'tsx'], cache: true, + cacheStrategy: 'content', }); const results = await eslint.lintFiles('./src'); const formatter = await eslint.loadFormatter();