mirror of
https://github.com/aspnet/JavaScriptServices.git
synced 2025-12-22 17:47:53 +00:00
Add aspnet-webpack-react NPM package
This commit is contained in:
4
src/Microsoft.AspNet.SpaServices/npm/aspnet-webpack-react/.gitignore
vendored
Normal file
4
src/Microsoft.AspNet.SpaServices/npm/aspnet-webpack-react/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/typings/
|
||||
/node_modules/
|
||||
/*.js
|
||||
/*.d.ts
|
||||
@@ -0,0 +1,3 @@
|
||||
!/*.js
|
||||
!/*.d.ts
|
||||
/typings/
|
||||
@@ -0,0 +1,12 @@
|
||||
Copyright (c) .NET Foundation. All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
these files except in compliance with the License. You may obtain a copy of the
|
||||
License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software distributed
|
||||
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations under the License.
|
||||
@@ -0,0 +1,6 @@
|
||||
# Not for general use
|
||||
|
||||
This NPM package is an internal implementation detail of the `Microsoft.AspNet.SpaServices` NuGet package.
|
||||
|
||||
You should not use this package directly in your own applications, because it is not supported, and there are no
|
||||
guarantees about how its APIs will change in the future.
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "aspnet-webpack-react",
|
||||
"version": "1.0.0",
|
||||
"description": "Helpers for using Webpack with React in ASP.NET projects. Works in conjunction with the Microsoft.AspNet.SpaServices NuGet package.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"prepublish": "tsd update && tsc && echo 'Finished building NPM package \"aspnet-webpack-react\"'",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "Microsoft",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"babel-core": "^6.7.2",
|
||||
"babel-loader": "^6.2.4",
|
||||
"babel-plugin-react-transform": "^2.0.2",
|
||||
"babel-preset-es2015": "^6.6.0",
|
||||
"babel-preset-react": "^6.5.0",
|
||||
"react": "^0.14.7",
|
||||
"webpack": "^1.12.14"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
import * as webpack from 'webpack';
|
||||
|
||||
export function addReactHotModuleReplacementBabelTransform(webpackConfig: webpack.Configuration) {
|
||||
webpackConfig.module.loaders.forEach(loaderConfig => {
|
||||
if (loaderConfig.loader && loaderConfig.loader.match(/\bbabel-loader\b/)) {
|
||||
// Ensure the babel-loader options includes a 'query'
|
||||
const query = loaderConfig.query = loaderConfig.query || {};
|
||||
|
||||
// Ensure Babel plugins includes 'react-transform'
|
||||
const plugins = query['plugins'] = query['plugins'] || [];
|
||||
const hasReactTransform = plugins.some(p => p && p[0] === 'react-transform');
|
||||
if (!hasReactTransform) {
|
||||
plugins.push(['react-transform', {}]);
|
||||
}
|
||||
|
||||
// Ensure 'react-transform' plugin is configured to use 'react-transform-hmr'
|
||||
plugins.forEach(pluginConfig => {
|
||||
if (pluginConfig && pluginConfig[0] === 'react-transform') {
|
||||
const pluginOpts = pluginConfig[1] = pluginConfig[1] || {};
|
||||
const transforms = pluginOpts.transforms = pluginOpts.transforms || [];
|
||||
const hasReactTransformHmr = transforms.some(t => t.transform === 'react-transform-hmr');
|
||||
if (!hasReactTransformHmr) {
|
||||
transforms.push({
|
||||
transform: 'react-transform-hmr',
|
||||
imports: ['react'],
|
||||
locals: ['module'] // Important for Webpack HMR
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export { addReactHotModuleReplacementBabelTransform } from './HotModuleReplacement';
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"moduleResolution": "node",
|
||||
"module": "commonjs",
|
||||
"target": "es5",
|
||||
"declaration": true,
|
||||
"outDir": "."
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": "v4",
|
||||
"repo": "borisyankov/DefinitelyTyped",
|
||||
"ref": "master",
|
||||
"path": "typings",
|
||||
"bundle": "typings/tsd.d.ts",
|
||||
"installed": {
|
||||
"source-map/source-map.d.ts": {
|
||||
"commit": "0144ad5a74053f2292424847259c4c8e1d0fecaa"
|
||||
},
|
||||
"webpack/webpack.d.ts": {
|
||||
"commit": "0144ad5a74053f2292424847259c4c8e1d0fecaa"
|
||||
},
|
||||
"uglify-js/uglify-js.d.ts": {
|
||||
"commit": "0144ad5a74053f2292424847259c4c8e1d0fecaa"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user