diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 800d0c66f..d59927b1f 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,19 +1,14 @@ -FROM mcr.microsoft.com/vscode/devcontainers/base:0-buster - -ENV DENO_INSTALL=/deno -RUN mkdir -p /deno \ - && curl -fsSL https://deno.land/x/install/install.sh | sh \ - && chown -R vscode /deno - -ENV PATH=${DENO_INSTALL}/bin:${PATH} \ - DENO_DIR=${DENO_INSTALL}/.cache/deno +# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster +ARG VARIANT=16-bullseye +FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:0-${VARIANT} # [Optional] Uncomment this section to install additional OS packages. -RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ - && apt-get -y install --no-install-recommends make +# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ +# && apt-get -y install --no-install-recommends -# Install node -RUN curl -sL https://deb.nodesource.com/setup_16.x | bash -RUN apt-get -y install --no-install-recommends nodejs +# [Optional] Uncomment if you want to install an additional version of node using nvm +# ARG EXTRA_NODE_VERSION=10 +# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}" -USER vscode \ No newline at end of file +# [Optional] Uncomment if you want to install more global node packages +# RUN su node -c "npm install -g " diff --git a/.devcontainer/base.Dockerfile b/.devcontainer/base.Dockerfile new file mode 100644 index 000000000..35b6654f8 --- /dev/null +++ b/.devcontainer/base.Dockerfile @@ -0,0 +1,17 @@ +# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster +ARG VARIANT=16-bullseye +FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT} + +# Install tslint, typescript. eslint is installed by javascript image +ARG NODE_MODULES="tslint-to-eslint-config typescript" +COPY library-scripts/meta.env /usr/local/etc/vscode-dev-containers +RUN su node -c "umask 0002 && npm install -g ${NODE_MODULES}" \ + && npm cache clean --force > /dev/null 2>&1 + +# [Optional] Uncomment this section to install additional OS packages. +# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ +# && apt-get -y install --no-install-recommends + +# [Optional] Uncomment if you want to install an additional version of node using nvm +# ARG EXTRA_NODE_VERSION=10 +# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}" diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c9696d8a5..594a1b099 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,50 +1,36 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: -// https://github.com/microsoft/vscode-dev-containers/tree/v0.162.0/containers/deno +// https://github.com/microsoft/vscode-dev-containers/tree/v0.245.0/containers/typescript-node { - "name": "Deno", - "dockerFile": "Dockerfile", - // Set *default* container specific settings.json values on container create. - "settings": { - "terminal.integrated.defaultProfile.linux": "/bin/bash", - "deno.enable": true, - "editor.defaultFormatter": "denoland.vscode-deno", - "editor.minimap.enabled": false, - "editor.wordWrap": "on", - "editor.codeActionsOnSave": { - "source.organizeImports": true, - "source.fixAll": true - }, - "editor.fontSize": 16, - "workbench.colorTheme": "Material Theme Darker", - "workbench.iconTheme": "eq-material-theme-icons-darker", - "breadcrumbs.enabled": true, - "editor.renderWhitespace": "all", - "editor.suggestSelection": "first", - "editor.formatOnSave": true, - "files.autoSave": "afterDelay", - "editor.fontFamily": "Fira Code, Menlo, Monaco, 'Courier New', monospace", - "typescript.updateImportsOnFileMove.enabled": "always", - "javascript.updateImportsOnFileMove.enabled": "always", - "deno.inlayHints.enumMemberValues.enabled": true, - "deno.inlayHints.functionLikeReturnTypes.enabled": true, - "deno.inlayHints.parameterNames.enabled": "all", - "deno.inlayHints.parameterNames.suppressWhenArgumentMatchesName": false, - "deno.inlayHints.parameterTypes.enabled": true, - "deno.inlayHints.propertyDeclarationTypes.enabled": true, - "deno.inlayHints.variableTypes.enabled": true, - "deno.inlayHints.variableTypes.suppressWhenTypeMatchesName": false - }, - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "denoland.vscode-deno", - "pkief.material-icon-theme", - "equinusocio.vsc-material-theme", - "tabnine.tabnine-vscode" - ], - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - // Uncomment to use the Docker CLI from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker. - // "mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ], - // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "vscode" + "name": "Node.js & TypeScript", + "build": { + "dockerfile": "Dockerfile", + // Update 'VARIANT' to pick a Node version: 18, 16, 14. + // Append -bullseye or -buster to pin to an OS version. + // Use -bullseye variants on local on arm64/Apple Silicon. + "args": { + "VARIANT": "16-bullseye" + } + }, + + // Configure tool-specific properties. + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "TabNine.tabnine-vscode" + ] + } + }, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "yarn install", + + // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "node", }