vscode/.devcontainer
Robo b5a6aa14a8
feat: switch to npm as default package manager (#226927)
* feat: move from yarn to npm

* chore: skip yarn.lock files

* fix: playwright download

* chore: fix compile and hygiene

* chore: bump vsce@2.17.0

Refs 8b49e9dfdf

* test: update results for bat and sh colorizer tests

* fix: add missing lock files for windows

* fix: switch to legacy-peer-deps

* chore: update markdown-it@14.1.0

Refs 737c95a129

esbuild step in extensions-ci-pr was previously using markdown-it
from root which had userland punycode and was able to compile successfully.

* ci: increase pr timeout for windows integration tests

* chore: fix product build

* build: ignore extension dev dependency for rcedit

* build: fix working directory inside container

* build: fix dependency generation

* npm: update dependencies

* ci: use global npmrc

* ci: update cache

* ci: setup global npmrc for private npm auth

* build: fix extension bundling

* chore: sync npm dependencies

* ci: debug env variables for container

* ci: fix win32 cli pipeline

* build: fix npmrc config usage for build/ and remote/ dirs

* fix: windows build

* fix: container builds

* fix: markdown-language-features tests and bundling

```
[03:58:22] Error: Command failed: /Users/demohan/.nvm/versions/node/v20.15.1/bin/node /Users/demohan/github/vscode/extensions/markdown-language-features/esbuild-notebook.js --outputRoot /Users/demohan/github/vscode/.build/extensions/markdown-language-features
✘ [ERROR] Could not resolve "punycode"

    extensions/markdown-language-features/node_modules/markdown-it/lib/index.js:14:27:
      14 │ var punycode     = require('punycode');
         ╵                            ~~~~~~~~~~

  The package "punycode" wasn't found on the file system but is built into node. Are you trying to bundle for node? You can use "platform: 'node'" to do that, which will remove this error.
```

Adds userland package based on beed9aee2c

* fix: container builds for distro

* chore: update yarn occurrences

* fixup! chore: bump vsce@2.17.0

Uses the closest version to `main` branch that does not
include d3cc84cdec
while still having the fix 8b49e9dfdf

* chore: sync npm dependencies

* chore: sync npm dependencies

* chore: sync npm dependencies

* chore: throw error when yarn is used for installation

* chore: add review feedback

* chore: switch exec => run where needed

* chore: npm sync dependencies

* fix: markdown-language-features bundling

```
✘ [ERROR] Could not resolve "punycode"

    extensions/markdown-language-features/node_modules/markdown-it/lib/index.js:14:27:
      14 │ var punycode     = require('punycode');
         ╵                            ~~~~~~~~~~

  The package "punycode" wasn't found on the file system but is built into node. Are you trying to bundle for node? You can use "platform: 'node'" to do that, which will remove this error.
```

Adds missing userland package based on markdown-it/markdown-it@beed9ae,
can be removed once we update markdown-it >= 14.1.0

* ci: rename no-yarn-lock-changes.yml

* chore: sync npm dependencies

* ci: restore no-yarn-lock-changes.yml

We can disable it in a separate PR to keep the required
checks happy and also need workflow edit perms.

* chore: sync npm dependencies

* ci: rebuild cache

* ci: fix no-package-lock-changes.yml

* chore: bump distro

* chore: rm yarn.lock files

* chore: rm yarn.lock files without dependencies

* chore: add vscode-selfhost-import-aid to postinstall dirs

* chore: bump distro
2024-09-06 22:18:02 +09:00
..
Dockerfile feat: switch to npm as default package manager (#226927) 2024-09-06 22:18:02 +09:00
README.md feat: switch to npm as default package manager (#226927) 2024-09-06 22:18:02 +09:00
devcontainer-lock.json Setup rust in Devcontainer (#221301) 2024-07-10 16:53:41 +00:00
devcontainer.json Setup rust in Devcontainer (#221301) 2024-07-10 16:53:41 +00:00
install-vscode.sh Kerberos auth for proxies (#188130) 2023-07-19 20:11:00 +02:00
post-create.sh feat: switch to npm as default package manager (#226927) 2024-09-06 22:18:02 +09:00

README.md

Code - OSS Development Container

Open in Dev Containers

This repository includes configuration for a development container for working with Code - OSS in a local container or using GitHub Codespaces.

Tip: The default VNC password is vscode. The VNC server runs on port 5901 and a web client is available on port 6080.

Quick start - local

If you already have VS Code and Docker installed, you can click the badge above or here to get started. Clicking these links will cause VS Code to automatically install the Dev Containers extension if needed, clone the source code into a container volume, and spin up a dev container for use.

  1. Install Docker Desktop or Docker for Linux on your local machine. (See docs for additional details.)

  2. Important: Docker needs at least 4 Cores and 8 GB of RAM to run a full build with 9 GB of RAM being recommended. If you are on macOS, or are using the old Hyper-V engine for Windows, update these values for Docker Desktop by right-clicking on the Docker status bar item and going to Preferences/Settings > Resources > Advanced.

    Note: The Resource Monitor extension is included in the container so you can keep an eye on CPU/Memory in the status bar.

  3. Install Visual Studio Code Stable or Insiders and the Dev Containers extension.

    Image of Dev Containers extension

    Note: The Dev Containers extension requires the Visual Studio Code distribution of Code - OSS. See the FAQ for details.

  4. Press Ctrl/Cmd + Shift + P or F1 and select Dev Containers: Clone Repository in Container Volume....

    Tip: While you can use your local source tree instead, operations like npm i can be slow on macOS or when using the Hyper-V engine on Windows. We recommend using the WSL filesystem on Windows or the "clone repository in container" approach on Windows and macOS instead since it uses "named volume" rather than the local filesystem.

  5. Type https://github.com/microsoft/vscode (or a branch or PR URL) in the input box and press Enter.

  6. After the container is running:

    1. If you have the DISPLAY or WAYLAND_DISPLAY environment variables set locally (or in WSL on Windows), desktop apps in the container will be shown in local windows.
    2. If these are not set, open a web browser and go to http://localhost:6080, or use a VNC Viewer to connect to localhost:5901 and enter vscode as the password. Anything you start in VS Code, or the integrated terminal, will appear here.

Next: Try it out!

Quick start - GitHub Codespaces

  1. From the microsoft/vscode GitHub repository, click on the Code dropdown, select Open with Codespaces, and then click on New codespace. If prompted, select the Standard machine size (which is also the default).

    Note: You will not see these options within GitHub if you are not in the Codespaces beta.

  2. After the codespace is up and running in your browser, press Ctrl/Cmd + Shift + P or F1 and select Ports: Focus on Ports View.

  3. You should see VNC web client (6080) under in the list of ports. Select the line and click on the globe icon to open it in a browser tab.

    Tip: If you do not see the port, Ctrl/Cmd + Shift + P or F1, select Forward a Port and enter port 6080.

  4. In the new tab, you should see noVNC. Click Connect and enter vscode as the password.

Anything you start in VS Code, or the integrated terminal, will appear here.

Next: Try it out!

Using VS Code with GitHub Codespaces

You may see improved VNC responsiveness when accessing a codespace from VS Code client since you can use a VNC Viewer. Here's how to do it.

  1. Install Visual Studio Code Stable or Insiders and the the GitHub Codespaces extension.

    Note: The GitHub Codespaces extension requires the Visual Studio Code distribution of Code - OSS.

  2. After the VS Code is up and running, press Ctrl/Cmd + Shift + P or F1, choose Codespaces: Create New Codespace, and use the following settings:

  • microsoft/vscode for the repository.
  • Select any branch (e.g. main) - you can select a different one later.
  • Choose Standard (4-core, 8GB) as the size.
  1. After you have connected to the codespace, you can use a VNC Viewer to connect to localhost:5901 and enter vscode as the password.

    Tip: You may also need change your VNC client's Picture Quality setting to High to get a full color desktop.

  2. Anything you start in VS Code, or the integrated terminal, will appear here.

Next: Try it out!

Try it

This container uses the Fluxbox window manager to keep things lean. Right-click on the desktop to see menu options. It works with GNOME and GTK applications, so other tools can be installed if needed.

Note: You can also set the resolution from the command line by typing set-resolution.

To start working with Code - OSS, follow these steps:

  1. In your local VS Code client, open a terminal (Ctrl/Cmd + Shift + `) and type the following commands:

    npm i
    bash scripts/code.sh
    
  2. After the build is complete, open a web browser or a VNC Viewer to connect to the desktop environment as described in the quick start and enter vscode as the password.

  3. You should now see Code - OSS!

Next, let's try debugging.

  1. Shut down Code - OSS by clicking the box in the upper right corner of the Code - OSS window through your browser or VNC viewer.

  2. Go to your local VS Code client, and use the Run / Debug view to launch the VS Code configuration. (Typically the default, so you can likely just press F5).

    Note: If launching times out, you can increase the value of timeout in the "VS Code", "Attach Main Process", "Attach Extension Host", and "Attach to Shared Process" configurations in launch.json. However, running ./scripts/code.sh first will set up Electron which will usually solve timeout issues.

  3. After a bit, Code - OSS will appear with the debugger attached!

Enjoy!

Notes

The container comes with VS Code Insiders installed. To run it from an Integrated Terminal use VSCODE_IPC_HOOK_CLI= /usr/bin/code-insiders ..