Skip to content
This repository was archived by the owner on Apr 8, 2020. It is now read-only.

Commit a9ddf14

Browse files
Merge branch 'rel/2.0.0-templates' into dev
2 parents a0a710a + 8b37dc8 commit a9ddf14

22 files changed

+1832
-68
lines changed

src/Microsoft.AspNetCore.SpaServices/npm/aspnet-webpack/package-lock.json

Lines changed: 1700 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Microsoft.AspNetCore.SpaServices/npm/aspnet-webpack/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aspnet-webpack",
3-
"version": "2.0.0",
3+
"version": "2.0.1",
44
"description": "Helpers for using Webpack in ASP.NET Core projects. Works in conjunction with the Microsoft.AspNetCore.SpaServices NuGet package.",
55
"main": "index.js",
66
"scripts": {

src/Microsoft.AspNetCore.SpaServices/npm/aspnet-webpack/src/WebpackDevMiddleware.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import * as fs from 'fs';
55
import * as path from 'path';
66
import * as querystring from 'querystring';
77
import { requireNewCopy } from './RequireNewCopy';
8+
import { hasSufficientPermissions } from './WebpackTestPermissions';
89

910
export type CreateDevServerResult = {
1011
Port: number,
11-
PublicPaths: string[],
12-
PublicPath: string // For backward compatibility with older verions of Microsoft.AspNetCore.SpaServices. Will be removed soon.
12+
PublicPaths: string[]
1313
};
1414

1515
export interface CreateDevServerCallback {
@@ -224,6 +224,16 @@ function beginWebpackWatcher(webpackConfig: webpack.Configuration) {
224224
export function createWebpackDevServer(callback: CreateDevServerCallback, optionsJson: string) {
225225
const options: CreateDevServerOptions = JSON.parse(optionsJson);
226226

227+
// See the large comment in WebpackTestPermissions.ts for details about this
228+
if (!hasSufficientPermissions()) {
229+
console.log('WARNING: Webpack dev middleware is not enabled because the server process does not have sufficient permissions. You should either remove the UseWebpackDevMiddleware call from your code, or to make it work, give your server process user account permission to write to your application directory and to read all ancestor-level directories.');
230+
callback(null, {
231+
Port: 0,
232+
PublicPaths: []
233+
});
234+
return;
235+
}
236+
227237
// Read the webpack config's export, and normalize it into the more general 'array of configs' format
228238
let webpackConfigExport: WebpackConfigFileExport = requireNewCopy(options.webpackConfigPath);
229239
if (webpackConfigExport instanceof Function) {
@@ -298,11 +308,7 @@ export function createWebpackDevServer(callback: CreateDevServerCallback, option
298308
// Tell the ASP.NET app what addresses we're listening on, so that it can proxy requests here
299309
callback(null, {
300310
Port: listener.address().port,
301-
PublicPaths: normalizedPublicPaths,
302-
303-
// For back-compatibility with older versions of Microsoft.AspNetCore.SpaServices, in the case where
304-
// you have exactly one webpackConfigArray entry. This will be removed soon.
305-
PublicPath: normalizedPublicPaths[0]
311+
PublicPaths: normalizedPublicPaths
306312
});
307313
} catch (ex) {
308314
callback(ex.stack, null);
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import * as fs from 'fs';
2+
import * as path from 'path';
3+
const isWindows = /^win/.test(process.platform);
4+
5+
// On Windows, Node (still as of v8.1.3) has an issue whereby, when locating JavaScript modules
6+
// on disk, it walks up the directory hierarchy to the disk root, testing whether each directory
7+
// is a symlink or not. This fails with an exception if the process doesn't have permission to
8+
// read those directories. This is a problem when hosting in full IIS, because in typical cases
9+
// the process does not have read permission for higher-level directories.
10+
//
11+
// NodeServices itself works around this by injecting a patched version of Node's 'lstat' API that
12+
// suppresses these irrelevant errors during module loads. This covers most scenarios, but isn't
13+
// enough to make Webpack dev middleware work, because typical Webpack configs use loaders such as
14+
// 'awesome-typescript-loader', which works by forking a child process to do some of its work. The
15+
// child process does not get the patched 'lstat', and hence fails. It's an especially bad failure,
16+
// because the Webpack compiler doesn't even surface the exception - it just never completes the
17+
// compilation process, causing the application to hang indefinitely.
18+
//
19+
// Additionally, Webpack dev middleware will want to write its output to disk, which is also going
20+
// to fail in a typical IIS process, because you won't have 'write' permission to the app dir by
21+
// default. We have to actually write the build output to disk (and not purely keep it in the in-
22+
// memory file system) because the server-side prerendering Node instance is a separate process
23+
// that only knows about code changes when it sees the compiled files on disk change.
24+
//
25+
// In the future, we'll hopefully get Node to fix its underlying issue, and figure out whether VS
26+
// could give 'write' access to the app dir when launching sites in IIS. But until then, disable
27+
// Webpack dev middleware if we detect the server process doesn't have the necessary permissions.
28+
29+
export function hasSufficientPermissions() {
30+
if (isWindows) {
31+
return canReadDirectoryAndAllAncestors(process.cwd());
32+
} else {
33+
return true;
34+
}
35+
}
36+
37+
function canReadDirectoryAndAllAncestors(dir: string): boolean {
38+
if (!canReadDirectory(dir)) {
39+
return false;
40+
}
41+
42+
const parentDir = path.resolve(dir, '..');
43+
if (parentDir === dir) {
44+
// There are no more parent directories - we've reached the disk root
45+
return true;
46+
} else {
47+
return canReadDirectoryAndAllAncestors(parentDir);
48+
}
49+
}
50+
51+
function canReadDirectory(dir: string): boolean {
52+
try {
53+
fs.statSync(dir);
54+
return true;
55+
} catch(ex) {
56+
return false;
57+
}
58+
}

templates/AngularSpa/AngularSpa.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@
99
</PropertyGroup>
1010

1111
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
12-
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26219" />
12+
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26272" />
1313
</ItemGroup>
1414
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
15-
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26219" />
16-
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26219" />
17-
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26219" />
18-
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26219" />
15+
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26272" />
16+
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26272" />
17+
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26272" />
18+
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26272" />
1919
</ItemGroup>
2020

2121
<ItemGroup>
22-
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26219" />
22+
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26272" />
2323
</ItemGroup>
2424

2525
<ItemGroup>

templates/AngularSpa/npm-shrinkwrap.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/AngularSpa/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"@types/node": "8.0.8",
2222
"angular2-template-loader": "0.6.2",
2323
"aspnet-prerendering": "^3.0.1",
24-
"aspnet-webpack": "^2.0.0",
24+
"aspnet-webpack": "^2.0.1",
2525
"awesome-typescript-loader": "3.2.1",
2626
"bootstrap": "3.3.7",
2727
"css": "2.2.1",

templates/AureliaSpa/AureliaSpa.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@
99
</PropertyGroup>
1010

1111
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
12-
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26219" />
12+
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26272" />
1313
</ItemGroup>
1414
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
15-
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26219" />
16-
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26219" />
17-
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26219" />
18-
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26219" />
15+
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26272" />
16+
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26272" />
17+
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26272" />
18+
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26272" />
1919
</ItemGroup>
2020

2121
<ItemGroup>
22-
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26219" />
22+
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26272" />
2323
</ItemGroup>
2424

2525
<!--/-:cnd:noEmit -->

templates/AureliaSpa/npm-shrinkwrap.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/AureliaSpa/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
},
1616
"devDependencies": {
1717
"@types/node": "^7.0.12",
18-
"aspnet-webpack": "^2.0.0",
18+
"aspnet-webpack": "^2.0.1",
1919
"aurelia-webpack-plugin": "^2.0.0-rc.2",
2020
"css-loader": "^0.28.0",
2121
"extract-text-webpack-plugin": "^2.1.0",

templates/KnockoutSpa/KnockoutSpa.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@
99
</PropertyGroup>
1010

1111
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
12-
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26219" />
12+
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26272" />
1313
</ItemGroup>
1414
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
15-
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26219" />
16-
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26219" />
17-
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26219" />
18-
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26219" />
15+
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26272" />
16+
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26272" />
17+
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26272" />
18+
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26272" />
1919
</ItemGroup>
2020

2121
<ItemGroup>
22-
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26219" />
22+
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26272" />
2323
</ItemGroup>
2424

2525
<!--/-:cnd:noEmit -->

templates/KnockoutSpa/npm-shrinkwrap.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/KnockoutSpa/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"@types/react-router": "^2.0.37",
1313
"@types/requirejs": "^2.1.26",
1414
"@types/signals": "0.0.16",
15-
"aspnet-webpack": "^2.0.0",
15+
"aspnet-webpack": "^2.0.1",
1616
"awesome-typescript-loader": "^3.0.0",
1717
"bootstrap": "^3.3.6",
1818
"bundle-loader": "^0.5.4",

templates/ReactReduxSpa/ReactReduxSpa.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@
99
</PropertyGroup>
1010

1111
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
12-
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26219" />
12+
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26272" />
1313
</ItemGroup>
1414
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
15-
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26219" />
16-
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26219" />
17-
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26219" />
18-
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26219" />
15+
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26272" />
16+
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26272" />
17+
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26272" />
18+
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26272" />
1919
</ItemGroup>
2020

2121
<ItemGroup>
22-
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26219" />
22+
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26272" />
2323
</ItemGroup>
2424

2525
<ItemGroup>

templates/ReactReduxSpa/npm-shrinkwrap.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/ReactReduxSpa/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"@types/webpack": "2.2.15",
1414
"@types/webpack-env": "1.13.0",
1515
"aspnet-prerendering": "^3.0.1",
16-
"aspnet-webpack": "^2.0.0",
16+
"aspnet-webpack": "^2.0.1",
1717
"aspnet-webpack-react": "^3.0.0",
1818
"awesome-typescript-loader": "3.2.1",
1919
"bootstrap": "3.3.7",

templates/ReactSpa/ReactSpa.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@
99
</PropertyGroup>
1010

1111
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
12-
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26219" />
12+
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26272" />
1313
</ItemGroup>
1414
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
15-
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26219" />
16-
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26219" />
17-
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26219" />
18-
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26219" />
15+
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26272" />
16+
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26272" />
17+
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26272" />
18+
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26272" />
1919
</ItemGroup>
2020

2121
<ItemGroup>
22-
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26219" />
22+
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26272" />
2323
</ItemGroup>
2424

2525
<!--/-:cnd:noEmit -->

templates/ReactSpa/npm-shrinkwrap.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/ReactSpa/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"@types/react-dom": "15.5.1",
99
"@types/react-router": "4.0.12",
1010
"@types/webpack-env": "1.13.0",
11-
"aspnet-webpack": "^2.0.0",
11+
"aspnet-webpack": "^2.0.1",
1212
"aspnet-webpack-react": "^3.0.0",
1313
"awesome-typescript-loader": "3.2.1",
1414
"bootstrap": "3.3.7",

templates/VueSpa/VueSpa.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@
99
</PropertyGroup>
1010

1111
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
12-
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26219" />
12+
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-rtm-26272" />
1313
</ItemGroup>
1414
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
15-
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26219" />
16-
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26219" />
17-
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26219" />
18-
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26219" />
15+
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0-rtm-26272" />
16+
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0-rtm-26272" />
17+
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.0-rtm-26272" />
18+
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0-rtm-26272" />
1919
</ItemGroup>
2020

2121
<ItemGroup>
22-
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26219" />
22+
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-rtm-26272" />
2323
</ItemGroup>
2424

2525
<!--/-:cnd:noEmit -->

templates/VueSpa/npm-shrinkwrap.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/VueSpa/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"version": "0.0.0",
55
"devDependencies": {
66
"@types/requirejs": "^2.1.28",
7-
"aspnet-webpack": "^2.0.0",
7+
"aspnet-webpack": "^2.0.1",
88
"awesome-typescript-loader": "^3.0.0",
99
"bootstrap": "^3.3.6",
1010
"css-loader": "^0.25.0",

0 commit comments

Comments
 (0)