From 7e511177adfdabf5e1de3c3fcd331802a1c01aab Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Tue, 7 Feb 2023 21:10:06 -0300 Subject: [PATCH] Use Volta to manage Node and Yarn version --- .devcontainer/Dockerfile | 17 +++++---- .devcontainer/devcontainer.json | 60 ++++++++++++++++++------------- .github/workflows/build.yml | 7 +++- .github/workflows/release.yml | 6 +++- .gitignore | 12 +++++-- .yarnrc.yml | 1 + docker-compose.yml | 5 +-- package.json | 5 ++- yarn.lock | 64 ++++++++++++++++----------------- 9 files changed, 104 insertions(+), 73 deletions(-) create mode 100644 .yarnrc.yml diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 52b044de..5c196009 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,10 +1,9 @@ -FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-16 +FROM mcr.microsoft.com/devcontainers/base:ubuntu-22.04 -# Install Docker -ENV DOCKER_BUILDKIT="1" -# https://github.com/microsoft/vscode-dev-containers/commits/main/script-library/docker-debian.sh -ARG DOCKER_SCRIPT_VERSION="364972b0d7d20ee5de40c1084e65f3f1bc6d5951" -RUN bash -c "$(curl -fsSL "https://raw.githubusercontent.com/microsoft/vscode-dev-containers/${DOCKER_SCRIPT_VERSION}/script-library/docker-debian.sh")" \ - && rm -rf /var/lib/apt/lists/* -ENTRYPOINT ["/usr/local/share/docker-init.sh"] -CMD ["sleep", "infinity"] +USER vscode + +# Install Volta +ARG HOME="/home/vscode" +ENV VOLTA_HOME="${HOME}/.volta" +ENV PATH="${VOLTA_HOME}/bin:${PATH}" +RUN bash -c "$(curl -fsSL https://get.volta.sh)" -- --skip-setup diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 75ff5b53..9f34149b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,8 +2,15 @@ { "dockerComposeFile": "../docker-compose.yml", "service": "dev", + "features": { + "ghcr.io/devcontainers/features/docker-outside-of-docker:1": { + "moby": false, + "dockerDashComposeVersion": "v2" + } + }, "workspaceFolder": "${localWorkspaceFolder}", "shutdownAction": "stopCompose", + "forwardPorts": [10001, "hass:8123", "frigate:5000"], "portsAttributes": { "10001": { "label": "Rollup", @@ -18,33 +25,36 @@ "onAutoForward": "silent" } }, - "forwardPorts": [10001, "hass:8123", "frigate:5000"], "initializeCommand": ".devcontainer/initialize.sh", "postCreateCommand": "yarn install", - "extensions": [ - "github.vscode-pull-request-github", - "eamodio.gitlens", - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - "bierner.lit-html", - "runem.lit-plugin", - "davidanson.vscode-markdownlint", - "redhat.vscode-yaml", - "lokalise.i18n-ally", - "ms-azuretools.vscode-docker" - ], - "settings": { - "files.eol": "\n", - "editor.tabSize": 2, - "editor.formatOnPaste": false, - "editor.formatOnSave": true, - "editor.formatOnType": true, - "files.trimTrailingWhitespace": true, - "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[jsonc]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "customizations": { + "vscode": { + "extensions": [ + "github.vscode-pull-request-github", + "eamodio.gitlens", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "bierner.lit-html", + "runem.lit-plugin", + "davidanson.vscode-markdownlint", + "redhat.vscode-yaml", + "lokalise.i18n-ally", + "ms-azuretools.vscode-docker" + ], + "settings": { + "files.eol": "\n", + "editor.tabSize": 2, + "editor.formatOnPaste": false, + "editor.formatOnSave": true, + "editor.formatOnType": true, + "files.trimTrailingWhitespace": true, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } + } } } } diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 539a242a..55f64f8f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,12 @@ jobs: name: Test build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node and Yarn + uses: volta-cli/action@v3 + - name: Build run: | yarn install diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c11afea5..2a6d9f1e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,7 +11,11 @@ jobs: name: Prepare release runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node and Yarn + uses: volta-cli/action@v3 # Build - name: Build the file diff --git a/.gitignore b/.gitignore index cb2e0455..32fbde4f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,9 +2,17 @@ /.rpt2_cache/ package-lock.json /dist -/.yarn/ .env .envrc -stats.html \ No newline at end of file +stats.html + +# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 00000000..3186f3f0 --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/docker-compose.yml b/docker-compose.yml index 3940d253..3dde8ad2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,11 @@ --- -version: '3' services: dev: - user: node + user: vscode init: true build: .devcontainer + entrypoint: /usr/local/share/docker-init.sh + command: sleep infinity env_file: - .env volumes: diff --git a/package.json b/package.json index 6ed65656..8b033069 100644 --- a/package.json +++ b/package.json @@ -74,12 +74,15 @@ "ts-prune": "^0.10.3", "typescript": "^4.9.5" }, - "packageManager": "yarn@3.4.1", "scripts": { "start": "rollup -c --watch", "build": "yarn run lint && yarn run rollup", "lint": "eslint 'src/**/*.ts'", "rollup": "rollup -c", "prune": "ts-prune" + }, + "volta": { + "node": "18.14.0", + "yarn": "3.4.1" } } diff --git a/yarn.lock b/yarn.lock index 612741d1..1c106e99 100644 --- a/yarn.lock +++ b/yarn.lock @@ -859,9 +859,9 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 18.11.19 - resolution: "@types/node@npm:18.11.19" - checksum: d7cd19fcfc59cbdd3f9ba0b4072cb7adc21bd575bd8eb7d7e698975e63564aaa83f03434f32b12331f84f73d0b369d9cbe2371e359d9d7f5c3361f4987f4f7da + version: 18.13.0 + resolution: "@types/node@npm:18.13.0" + checksum: 4ea10f8802848b01672bce938f678b6774ca2cee0c9774f12275ab064ae07818419c3e2e41d6257ce7ba846d1ea26c63214aa1dfa4166fa3746291752b8c6416 languageName: node linkType: hard @@ -1326,9 +1326,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001449": - version: 1.0.30001450 - resolution: "caniuse-lite@npm:1.0.30001450" - checksum: 511b360bfc907b2e437699364cf96b83507bc45043926450056642332bcd6f65a1e72540c828534ae15e0ac906e3e9af46cb2bb84458dd580bc31478e9dce282 + version: 1.0.30001451 + resolution: "caniuse-lite@npm:1.0.30001451" + checksum: 48a06a7881093bb4d8a08ed5428f24a1cbdaa544b0a6f0c3614287d4f34b6c853e79a0f608a5bd901c27995f5e951825606fba11e7930251cc422bd61de9d849 languageName: node linkType: hard @@ -1752,12 +1752,12 @@ __metadata: linkType: hard "define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" + version: 1.2.0 + resolution: "define-properties@npm:1.2.0" dependencies: has-property-descriptors: ^1.0.0 object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b + checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 languageName: node linkType: hard @@ -1841,9 +1841,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.284": - version: 1.4.288 - resolution: "electron-to-chromium@npm:1.4.288" - checksum: 312e1210f62c6bb593d1f57a15a1c64729e6a5edeacecc5d28dfb21f1a78ed3fac11805a0749a4e68f1fe1536229bf9d7bca36e1f34303369248a749a78aec1f + version: 1.4.295 + resolution: "electron-to-chromium@npm:1.4.295" + checksum: 66fff1341d3c94c2ccd1f2a39cffdb92118304f4b949d3194427e7022d6a6bd8c482b5c4afd9dce210117ba20cac01c1a1466089f5a862fe9c563113b86ff829 languageName: node linkType: hard @@ -2146,8 +2146,8 @@ __metadata: linkType: hard "eslint@npm:^8.23.0": - version: 8.33.0 - resolution: "eslint@npm:8.33.0" + version: 8.34.0 + resolution: "eslint@npm:8.34.0" dependencies: "@eslint/eslintrc": ^1.4.1 "@humanwhocodes/config-array": ^0.11.8 @@ -2190,7 +2190,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 727e63ab8b7acf281442323c5971f6afdd5b656fbcebc4476cf54e35af51b2f180617433fc5e1952f0449ca3f43a905527f9407ea4b8a7ea7562fc9c3f278d4c + checksum: 4e13e9eb05ac2248efbb6acae0b2325091235d5c47ba91a4775c7d6760778cbcd358a773ebd42f4629d2ad89e27c02f5d66eb1f737d75d9f5fc411454f83b2e5 languageName: node linkType: hard @@ -2562,7 +2562,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": version: 1.2.0 resolution: "get-intrinsic@npm:1.2.0" dependencies: @@ -2891,13 +2891,13 @@ __metadata: linkType: hard "internal-slot@npm:^1.0.4": - version: 1.0.4 - resolution: "internal-slot@npm:1.0.4" + version: 1.0.5 + resolution: "internal-slot@npm:1.0.5" dependencies: - get-intrinsic: ^1.1.3 + get-intrinsic: ^1.2.0 has: ^1.0.3 side-channel: ^1.0.4 - checksum: 8974588d06bab4f675573a3b52975370facf6486df51bc0567a982c7024fa29495f10b76c0d4dc742dd951d1b72024fdc1e31bb0bedf1678dc7aacacaf5a4f73 + checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a languageName: node linkType: hard @@ -3524,9 +3524,9 @@ __metadata: linkType: hard "minimist@npm:^1.2.0, minimist@npm:^1.2.6": - version: 1.2.7 - resolution: "minimist@npm:1.2.7" - checksum: 7346574a1038ca23c32e02252f603801f09384dd1d78b69a943a4e8c2c28730b80e96193882d3d3b22a063445f460e48316b29b8a25addca2d7e5e8f75478bec + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 languageName: node linkType: hard @@ -3591,9 +3591,9 @@ __metadata: linkType: hard "minipass@npm:^4.0.0": - version: 4.0.2 - resolution: "minipass@npm:4.0.2" - checksum: 2e4f4caaf85a45c01c6042adc43b5111a6113f62e300acf1db3b193ac3ec6e955bc893d6d8a08635598771a55a0f60487dcac59a1ac39557eb524295d4778c9e + version: 4.0.3 + resolution: "minipass@npm:4.0.3" + checksum: a09f405e2f380ae7f6ee0cbb53b45c1fcc1b6c70fc3896f4d20649d92a10e61892c57bd9960a64cedf6c90b50022cb6c195905b515039c335b423202f99e6f18 languageName: node linkType: hard @@ -3798,13 +3798,13 @@ __metadata: linkType: hard "open@npm:^8.4.0": - version: 8.4.0 - resolution: "open@npm:8.4.0" + version: 8.4.1 + resolution: "open@npm:8.4.1" dependencies: define-lazy-prop: ^2.0.0 is-docker: ^2.1.1 is-wsl: ^2.2.0 - checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c + checksum: dbe8e1d98889df60b5179eab8b94b9591744d1f0033bce1a9a10738ba140bd9d625d6bcde7ff9f043e379aafb918975c2daa03b87cef13eb046ac18ed807f06d languageName: node linkType: hard @@ -4389,11 +4389,11 @@ __metadata: linkType: hard "prettier@npm:^2.6.0": - version: 2.8.3 - resolution: "prettier@npm:2.8.3" + version: 2.8.4 + resolution: "prettier@npm:2.8.4" bin: prettier: bin-prettier.js - checksum: 92f2ceb522d454370e02082aa74ad27388672f7cee8975028b59517c069fe643bdc73e322675c8faf2ff173d7a626d1a6389f26b474000308e793aa25fff46e5 + checksum: c173064bf3df57b6d93d19aa98753b9b9dd7657212e33b41ada8e2e9f9884066bb9ca0b4005b89b3ab137efffdf8fbe0b462785aba20364798ff4303aadda57e languageName: node linkType: hard