Compiling Visual Studio Code from source – MacOs


I’ve just come across this– It works well and let you install plugins (but not auto updates)


Get rid of the M$ license :

Be able to run to independent apps and replace Sublime – two different shortcuts in two different apps is a bit too much.


Clone repository

git clone --depth 1

Edit product.json

Personalize your editor name. Example:

	"nameShort": "MaaT Studio",
	"nameLong": "MaaT Studio",
	"applicationName": "maat-studio",
	"dataFolderName": ".maat-studio",
	"win32MutexName": "vscodeoss",
	"licenseName": "MIT",
	"licenseUrl": "",
	"win32DirName": "MaaT Studio",
	"win32NameVersion": "MaaT Studio",
	"win32RegValueName": "MaaTStudio",
	"win32AppId": "{{E34003BB-9E10-4501-8C11-BE3FAA83F23F}",
	"win32x64AppId": "{{D77B7E06-80BA-4137-BCF4-654B95CCEBC5}",
	"win32UserAppId": "{{C6065F05-9603-4FC4-8101-B9781A25D88E}",
	"win32x64UserAppId": "{{C6065F05-9603-4FC4-8101-B9781A25D88E}",
	"win32AppUserModelId": "MaaT.Studio",
	"win32ShellNameShort": "MaaT Studio",
	"darwinBundleIdentifier": "",
	"reportIssueUrl": "",
	"urlProtocol": "maat-studio",
	"extensionAllowedProposedApi": [

Edit scripts/

Change the “Configuration” session to disable debugging. Example:

#!/usr/bin/env bash
if [[ "$OSTYPE" == "darwin"* ]]; then
	realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; }
	ROOT=$(dirname "$(dirname "$(realpath "$0")")")
	# On Linux with Electron 2.0.x running out of a VM causes
	# a freeze so we only enable this flag on macOS
	ROOT=$(dirname "$(dirname "$(readlink -f $0)")")
function code() {
	cd "$ROOT"
	if [[ "$OSTYPE" == "darwin"* ]]; then
		NAME=`node -p "require('./product.json').nameLong"`
		NAME=`node -p "require('./product.json').applicationName"`
	# Node modules
	test -d node_modules || yarn
	# Get electron
	node build/lib/electron.js || ./node_modules/.bin/gulp electron
	# Manage built-in extensions
	if [[ "$1" == "--builtin" ]]; then
		exec "$CODE" build/builtin
	# Sync built-in extensions
	node build/lib/builtInExtensions.js
	# Build
	test -d out || ./node_modules/.bin/gulp compile
	# Configuration
	export NODE_ENV=production
	export VSCODE_DEV=0
	export VSCODE_CLI=0
	# Launch Code
	exec "$CODE" . "[email protected]"
code "[email protected]"

Install the last version of Node 10.x

I recommend you to install the Node Version Manager (nvm) and install the last version of Node using it. Here is how to install Nvm.

 nvm install 10.15.3
nvm use 10.15.3

Install Yarn

Yarn is a Dependency Management for JavaScript. You can check here more details

npm install yarn --global

Install the editor dependencies


Run the editor

 sh scripts/

Now close it and go back to the console.

Compile the Editor

 npm run gulp vscode-darwin-min

The binary will be a folder up from your git Repo, e.g. “../VSCode-darwin/MaaT”. Move the “.app” file to “/Applications/”.

Add the executable to the Path

Change the path to your own:

sudo sh -c 'echo "/Applications/MaaT\" > /etc/paths.d/maat'

Shorter the command line

mv /Applications/MaaT\ /Applications/MaaT\


Open a new terminal and run:

m .


  • No automatic updates: You have to compile from source every time you need to update.
  • No external themes or plugins

2 Comments Add yours

  1. Fauzi says:

    Hi, thanks for sharing! How do I change the icon of the app?

    1. maat says:

      In the folder resources you can replace the icons for each platform:

      • Mac: resources/darwin/code.icns
      • Linux: resources/linux/code.png
      • Win: resources/win32/code.ico

Leave a Reply

Your email address will not be published.