Fix some build issues

This commit is contained in:
SteveSandersonMS
2016-02-10 13:30:16 -08:00
parent 71cb3abc13
commit ac23afc723
4 changed files with 99 additions and 93 deletions

View File

@@ -1,89 +1,89 @@
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.NodeServices; using Microsoft.AspNet.NodeServices;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.Extensions.PlatformAbstractions; using Microsoft.Extensions.PlatformAbstractions;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
namespace ES2015Example namespace ES2015Example
{ {
public class Startup public class Startup
{ {
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
{ {
// Setup configuration sources. // Setup configuration sources.
var builder = new ConfigurationBuilder() var builder = new ConfigurationBuilder()
.SetBasePath(appEnv.ApplicationBasePath) .SetBasePath(appEnv.ApplicationBasePath)
.AddJsonFile("appsettings.json") .AddJsonFile("appsettings.json")
.AddEnvironmentVariables(); .AddEnvironmentVariables();
Configuration = builder.Build(); Configuration = builder.Build();
} }
public IConfigurationRoot Configuration { get; set; } public IConfigurationRoot Configuration { get; set; }
// This method gets called by the runtime. // This method gets called by the runtime.
public void ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
// Add MVC services to the services container. // Add MVC services to the services container.
services.AddMvc(); services.AddMvc();
// Enable Node Services // Enable Node Services
services.AddNodeServices(); services.AddNodeServices();
} }
// Configure is called after ConfigureServices is called. // Configure is called after ConfigureServices is called.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, INodeServices nodeServices) public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, INodeServices nodeServices)
{ {
loggerFactory.MinimumLevel = LogLevel.Warning; loggerFactory.MinimumLevel = LogLevel.Warning;
loggerFactory.AddConsole(); loggerFactory.AddConsole();
loggerFactory.AddDebug(); loggerFactory.AddDebug();
// Configure the HTTP request pipeline. // Configure the HTTP request pipeline.
// Add the platform handler to the request pipeline. // Add the platform handler to the request pipeline.
app.UseIISPlatformHandler(); app.UseIISPlatformHandler();
// Add the following to the request pipeline only in development environment. // Add the following to the request pipeline only in development environment.
if (env.IsDevelopment()) if (env.IsDevelopment())
{ {
app.UseDeveloperExceptionPage(); app.UseDeveloperExceptionPage();
} }
else else
{ {
// Add Error handling middleware which catches all application specific errors and // Add Error handling middleware which catches all application specific errors and
// send the request to the following path or controller action. // send the request to the following path or controller action.
app.UseExceptionHandler("/Home/Error"); app.UseExceptionHandler("/Home/Error");
} }
// Dynamically transpile any .js files under the '/js/' directory // Dynamically transpile any .js files under the '/js/' directory
app.Use(next => async context => { app.Use(next => async context => {
var requestPath = context.Request.Path.Value; var requestPath = context.Request.Path.Value;
if (requestPath.StartsWith("/js/") && requestPath.EndsWith(".js")) { if (requestPath.StartsWith("/js/") && requestPath.EndsWith(".js")) {
var fileInfo = env.WebRootFileProvider.GetFileInfo(requestPath); var fileInfo = env.WebRootFileProvider.GetFileInfo(requestPath);
if (fileInfo.Exists) { if (fileInfo.Exists) {
var transpiled = await nodeServices.Invoke<string>("transpilation.js", fileInfo.PhysicalPath, requestPath); var transpiled = await nodeServices.Invoke<string>("transpilation.js", fileInfo.PhysicalPath, requestPath);
await context.Response.WriteAsync(transpiled); await context.Response.WriteAsync(transpiled);
return; return;
} }
} }
// Not a JS file, or doesn't exist - let some other middleware handle it // Not a JS file, or doesn't exist - let some other middleware handle it
await next.Invoke(context); await next.Invoke(context);
}); });
// Add static files to the request pipeline. // Add static files to the request pipeline.
app.UseStaticFiles(); app.UseStaticFiles();
// Add MVC to the request pipeline. // Add MVC to the request pipeline.
app.UseMvc(routes => app.UseMvc(routes =>
{ {
routes.MapRoute( routes.MapRoute(
name: "default", name: "default",
template: "{controller}/{action?}/{id?}", template: "{controller}/{action?}/{id?}",
defaults: new { controller="Home", action = "Index" }); defaults: new { controller="Home", action = "Index" });
}); });
} }
} }
} }

View File

@@ -1,7 +1,6 @@
import React from 'react'; import React from 'react';
import { renderToString } from 'react-dom/server'; import { renderToString } from 'react-dom/server';
import { match, RouterContext } from 'react-router'; import { match, RouterContext } from 'react-router';
import createMemoryHistory from 'history/lib/createMemoryHistory';
import { routes } from './components/ReactApp'; import { routes } from './components/ReactApp';
React; React;
@@ -14,7 +13,6 @@ export default function renderApp (params) {
} }
// Build an instance of the application // Build an instance of the application
const history = createMemoryHistory(params.url);
const app = <RouterContext {...renderProps} />; const app = <RouterContext {...renderProps} />;
// Render it as an HTML string which can be injected into the response // Render it as an HTML string which can be injected into the response

View File

@@ -14,7 +14,7 @@
"typings": "dist/Exports", "typings": "dist/Exports",
"author": "Microsoft", "author": "Microsoft",
"license": "Apache-2.0", "license": "Apache-2.0",
"peerDependencies": { "dependencies": {
"angular2": "2.0.0-beta.1", "angular2": "2.0.0-beta.1",
"rxjs": "5.0.0-beta.0" "rxjs": "5.0.0-beta.0"
}, },

View File

@@ -3,7 +3,15 @@ using Microsoft.Extensions.PlatformAbstractions;
namespace Microsoft.AspNet.NodeServices { namespace Microsoft.AspNet.NodeServices {
public static class Configuration { public static class Configuration {
private static string[] defaultWatchFileExtensions = new[] { ".js", ".jsx", ".ts", ".tsx", ".json", ".html" }; private readonly static string[] defaultWatchFileExtensions = new[] { ".js", ".jsx", ".ts", ".tsx", ".json", ".html" };
private readonly static NodeServicesOptions defaultOptions = new NodeServicesOptions {
HostingModel = NodeHostingModel.Http,
WatchFileExtensions = defaultWatchFileExtensions
};
public static void AddNodeServices(this IServiceCollection serviceCollection) {
AddNodeServices(serviceCollection, defaultOptions);
}
public static void AddNodeServices(this IServiceCollection serviceCollection, NodeServicesOptions options) { public static void AddNodeServices(this IServiceCollection serviceCollection, NodeServicesOptions options) {
serviceCollection.AddSingleton(typeof(INodeServices), (serviceProvider) => { serviceCollection.AddSingleton(typeof(INodeServices), (serviceProvider) => {