Skip to content
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

Port over Windows support #6

Merged
merged 3 commits into from
Oct 4, 2018
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
3 changes: 2 additions & 1 deletion guides/basic-use/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ If Watchman is not installed, a notice is displayed when invoking various comman

### Installing for Windows

<!-- copy over from ember-cli.com -->
Windows Vista and newer Windows versions are fully supported, although there are steps you can take to improve your experience.
You can find more information about this in our section on [Windows support](../reference/windows)

## Getting help

Expand Down
84 changes: 83 additions & 1 deletion guides/reference/windows.md
Original file line number Diff line number Diff line change
@@ -1 +1,83 @@
<!-- Port over info from existing site -->
Windows Vista and newer windows versions are fully supported.
Gaurav0 marked this conversation as resolved.
Show resolved Hide resolved

To get started ensure the following dependencies are installed:

* Node.js - [https://nodejs.org/en/](https://nodejs.org/en/)
* Git - [https://git-scm.com/](https://git-scm.com/)
* Phantom.js - [http://phantomjs.org/](http://phantomjs.org/)
Gaurav0 marked this conversation as resolved.
Show resolved Hide resolved

### Performance

Although supported, Windows performance, at least by default, isn't as good as
on Linux or MacOS. On a positive note, this story continues to improve. Both
Microsoft, and the Ember CLI team continue to work to improve these developer
Gaurav0 marked this conversation as resolved.
Show resolved Hide resolved
ergonomics.

#### What causes the build slowdown?

The two primary reasons are:

* Lack of enabled-by-default symlinks
* Generally slower FS operations on NTFS

#### For the best possible Windows experience

* Windows 10, insiders release with development mode enabled. Symlinks are enabled
Gaurav0 marked this conversation as resolved.
Show resolved Hide resolved
by default) [Details from
Microsoft](https://blogs.windows.com/buildingapps/2016/12/02/symlinks-windows-10/)
* or, Windows Subsystem Linux [Installation
Guide](https://msdn.microsoft.com/en-us/commandline/wsl/install_guide)

#### Improving your Windows experience

Ensure Search and Defender ignore your project's `tmp` directory:

```bash
npm install --save-dev ember-cli-windows-addon
```

Then, to start the automatic configuration, run:

```bash
ember windows
```

[Read more about this from the Microsoft DX Open Source team](http://felixrieseberg.com/improved-ember-cli-performance-with-windows/)

### Enabling symlinks

To create symlinks the account running Ember CLI must have the
`SeCreateSymbolicLinkPrivilege`. Users in the Administrators group have this
permission already. However, if UAC (User Access Control) is enabled, users in
the Administrators group must run their shell using Run As Administrator
because UAC strips away certain permissions from the Administrators +group,
including `SeCreateSymbolicLinkPrivilege`.

![Run As Administrator]({{ site.url }}/assets/images/common-issues/run-as-admin.png)

If the user account is not part of the Administrators group you will need to
add the `SeCreateSymbolicLinkPrivilege` to allow the creation of symlinks. To
do this open the `Local Security Policy` by typing Local Security Policy in the
Windows `Run` Box.

Under `Local Policies` -> `User Rights Assignment` find the `Create symbolic
links` policy and double click it to add a new user or group. Once your user or
group has been added, your user should be able to create symlinks. Keep in mind
if your user is part of the Administrators group and UAC is enabled you will
still need to start your shell using `Run as Administrator`.

![Enabling Symlinks]({{ site.url }}/assets/images/common-issues/enabling-symlinks.png)

### Issues With npm: `EEXISTS`, Path too Long, etc

There were always two major issues with running Node.js on Windows: first and
foremost, the operating system maintains a maximum length for path names, which
clashes with Node's traditional way of nesting modules in `node_modules`. The
second issue was a bit more subtle: The npm installer had a set of steps it
executed for each package and it would immediately start executing them as soon
as it decided to act on a package resulting in hard-to-debug race conditions.

`npm` 3 is a nearly complete rewrite of `npm`, fixing both issues. Windows users of
Ember Cli might want to make the switch to `npm` 3 to benefit from its
flat module installation (solving most issues involving long path names) as well
as its multi-stage installer.