Skip to content

🪟 🔧 Switch to pnpm for package managing #22053

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

Merged
merged 33 commits into from
Feb 6, 2023
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
fd225c9
WIP
Jan 19, 2023
9b1d50b
Merge branch 'master' into tim/pnpm
Jan 24, 2023
35bf80e
WIP
Jan 24, 2023
0a164df
Merge branch 'master' into tim/pnpm
Jan 28, 2023
63001be
Adjust lockfile
Jan 28, 2023
2dab133
Fix issues
Jan 28, 2023
ff69510
Adjust github flows
Jan 28, 2023
d361c06
More fixes
Jan 28, 2023
07b0b0b
Adjust documentation
Jan 28, 2023
b3649dc
Remove unnecessary tsconfig entry
Jan 28, 2023
2d1698b
Merge branch 'master' into tim/pnpm
Jan 31, 2023
ca66b4c
Cleanup .eslintrc
Jan 31, 2023
3604bdc
Update dependencies
Jan 31, 2023
99ef8d1
Fix more issues
Jan 31, 2023
6d0b4e2
Correct TS
Jan 31, 2023
e08d8cf
Make pnpm install run always via gradle
Jan 31, 2023
cdf5328
Install @storybook/react explicitaly
Jan 31, 2023
31edfdc
Update snapshots due to new libraries
Jan 31, 2023
09cb556
Add node-fetch types
Jan 31, 2023
6c2ff39
Add `url` package
Jan 31, 2023
352a21a
Freeze react router version (due to useBlocker)
Jan 31, 2023
e851a1c
Merge branch 'master' into tim/pnpm
Feb 1, 2023
695cdb6
Fix typing issue
Feb 1, 2023
3791796
Update airbyte-webapp/src/components/ui/BarChart/BarChart.tsx
Feb 2, 2023
3bfc186
Rewrite README
Feb 2, 2023
ab1d27f
Merge branch 'master' into tim/pnpm
Feb 2, 2023
8d2cc0a
Update e2e test library
Feb 2, 2023
a7dd7b9
Remove retry
Feb 2, 2023
9862222
Latest pnpm version
Feb 2, 2023
d4feec3
Revert removal of retry logic
Feb 2, 2023
f0e25f3
Merge branch 'master' into tim/pnpm
Feb 2, 2023
5db4ad5
Merge branch 'master' into tim/pnpm
Feb 2, 2023
bf1da86
Merge branch 'master' into tim/pnpm
Feb 6, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/actions/cache-build-artifacts/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,15 @@ runs:
restore-keys: |
${{ inputs.cache-key }}-npm-${{ runner.os }}-
- name: pnpm Caching
uses: actions/cache@v3
with:
path: |
~/.pnpm-store
key: ${{ inputs.cache-key }}-pnpm-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ inputs.cache-key }}-pnpm-${{ runner.os }}-
# this intentionally does not use restore-keys so we don't mess with gradle caching
- name: Gradle and Python Caching
uses: actions/cache@v3
Expand Down
2 changes: 1 addition & 1 deletion airbyte-webapp/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ module.exports = {
"plugin:jsx-a11y/recommended",
"plugin:@airbyte/recommended",
],
plugins: ["react", "@typescript-eslint", "prettier", "unused-imports", "css-modules", "jsx-a11y", "@airbyte"],
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ This is with pnpm now conflicting with the react plugin already being pulled in by eslint-config-react-app which we extend above. Since that plugin pulls in the react plugin also no need for us to pull it in explicitally.

plugins: ["@typescript-eslint", "prettier", "unused-imports", "css-modules", "jsx-a11y", "@airbyte"],
parserOptions: {
ecmaVersion: 2020,
sourceType: "module",
Expand Down
1 change: 1 addition & 0 deletions airbyte-webapp/.npmrc
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
engine-strict=true
enable-pre-post-scripts=true
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Required for pnpm to execute the prestart etc scripts. It doesn't do so by default, but we're using the heavily for Orval compilation.

34 changes: 26 additions & 8 deletions airbyte-webapp/build.gradle
Original file line number Diff line number Diff line change
@@ -1,28 +1,46 @@
plugins {
id "base"
id "com.github.node-gradle.node" version "3.3.0"
id "com.github.node-gradle.node" version "3.4.0"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Required to have PnpmTask available.

}

// Use the node version that's defined in the .nvmrc file
def nodeVersion = new File("${projectDir}/.nvmrc").text.trim();

// Read pnpm version to use from package.json engines.pnpm entry
def pnpmVer = new groovy.json.JsonSlurper().parse(new File("${projectDir}/package.json")).engines.pnpm.trim();

// This array should contain a path to all configs that are common to most build tasks and
// might affect them (i.e. if any of those files change we want to rerun most tasks)
def commonConfigs = [
'.env',
'package.json',
'package-lock.json',
'pnpm-lock.yaml',
'tsconfig.json',
'.prettierrc.js'
]

node {
download = true
version = nodeVersion
npmInstallCommand = 'ci'
pnpmVersion = pnpmVer
}

task validateLockFiles {
description "Validate only a pnpm-lock.yaml lock file exists"
doLast {
assert file("pnpm-lock.yaml").exists()
assert !file("package-lock.json").exists()
assert !file("yarn.lock").exists()
}
}

npm_run_build {
pnpmInstall.dependsOn validateLockFiles

task pnpmBuild(type: PnpmTask) {
dependsOn pnpmInstall

args = ['build']

inputs.files commonConfigs
inputs.file '.eslintrc.js'
inputs.dir 'public'
Expand All @@ -40,7 +58,7 @@ task test(type: NpmTask) {
}

task licenseCheck(type: NpmTask) {
dependsOn npmInstall
dependsOn pnpmInstall

args = ['run', 'license-check']
inputs.files commonConfigs
Expand All @@ -52,7 +70,7 @@ task licenseCheck(type: NpmTask) {
}

task validateLinks(type: NpmTask) {
dependsOn npmInstall
dependsOn pnpmInstall

args = ['run', 'validate-links']

Expand All @@ -62,7 +80,7 @@ task validateLinks(type: NpmTask) {
}

task buildStorybook(type: NpmTask) {
dependsOn npmInstall
dependsOn pnpmInstall
args = ['run', 'build:storybook']

inputs.files commonConfigs
Expand All @@ -78,7 +96,7 @@ task buildStorybook(type: NpmTask) {
}

task copyBuildOutput(type: Copy) {
dependsOn copyDocker, npm_run_build
dependsOn copyDocker, pnpmBuild

from "${project.projectDir}/build/app"
into 'build/docker/bin/build'
Expand Down
Loading