Compare commits

...
13 Commits
11 changed files with 107 additions and 16 deletions
+6
View File
@@ -0,0 +1,6 @@
{
"presets": [
"es2015",
"react"
]
}
+3
View File
@@ -25,3 +25,6 @@ build/Release
# Dependency directory # Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
node_modules node_modules
# Bower
bower_components/
+14
View File
@@ -1,5 +1,19 @@
# react-webpack-template - Changelog # react-webpack-template - Changelog
## 1.0.1:
___Upgrades___:
1. Updated isparta-instrumenter-loader to new version 1.0
## 1.0.0:
___Upgrades___:
1. Updated to babel core version (6.0.x)
2. Replaced isparta-loader with the more current (and better maintained) isparta-instrumenter-loader.
## 0.3.2:
___Features___:
1. Added support for bower components in webpack
2. Added coverage reporting via karma-coverage
## 0.3.1: ## 0.3.1:
___Upgrades___: ___Upgrades___:
1. Added bugfix for tests in watch mode (could be overridden by config) 1. Added bugfix for tests in watch mode (could be overridden by config)
+1 -2
View File
@@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2015 Chris Copyright (c) 2015 Christian Schilling <cs@weblogixx.de>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -19,4 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
+28 -3
View File
@@ -1,6 +1,6 @@
# Welcome to react-webpack-template # Welcome to react-webpack-template
> This repository holds a base template for the new version of generator-react-webpack. > This repository holds the base template for the current version of [generator-react-webpack](https://github.com/newtriks/generator-react-webpack).
It can be understood as the prototype for newly generated projects. It can also be used as the prototype for newly generated projects.
[![Build Status](https://travis-ci.org/weblogixx/react-webpack-template.svg)](https://travis-ci.org/weblogixx/react-webpack-template) ![Amount of Downloads per month](https://img.shields.io/npm/dm/react-webpack-template.svg "Amount of Downloads") ![Dependency Tracker](https://img.shields.io/david/weblogixx/react-webpack-template.svg "Dependency Tracker") ![Dependency Tracker](https://img.shields.io/david/dev/weblogixx/react-webpack-template.svg "Dependency Tracker") [![Build Status](https://travis-ci.org/weblogixx/react-webpack-template.svg)](https://travis-ci.org/weblogixx/react-webpack-template) ![Amount of Downloads per month](https://img.shields.io/npm/dm/react-webpack-template.svg "Amount of Downloads") ![Dependency Tracker](https://img.shields.io/david/weblogixx/react-webpack-template.svg "Dependency Tracker") ![Dependency Tracker](https://img.shields.io/david/dev/weblogixx/react-webpack-template.svg "Dependency Tracker")
@@ -10,9 +10,10 @@ The following features are currently included:
- [x] Webpack and Webpack-Dev-Server, including hot-loader - [x] Webpack and Webpack-Dev-Server, including hot-loader
- [x] Babel and JSX - [x] Babel and JSX
- [x] Mocha Unit tests (*optional*) - [x] Mocha Unit tests (*optional*)
- [x] EsLint Support - [x] esLint Support
- [x] No dependency on grunt, gulp or the next hot taskrunner! - [x] No dependency on grunt, gulp or the next hot taskrunner!
- [x] Support for environment-specific configuration files - [x] Support for environment-specific configuration files
- [x] Support for code coverage via [isparta-loader](https://github.com/deepsweet/isparta-loader)
## Todo ## Todo
- [ ] Better performance for webpack builds - [ ] Better performance for webpack builds
@@ -64,6 +65,30 @@ webpack-dev-server --env=dev
webpack --env=dist webpack --env=dist
webpack-dev-server --env=dist webpack-dev-server --env=dist
``` ```
## A note on unit testing
When running tests, coverage information (provided via Istanbul) will also be written into the ```coverage/``` directory. If you do not need this, just comment out or remove the section in ```karma.conf``` like this:
```javascript
/* do not use coverage reporting!
coverageReporter: {
type: 'html',
dir: 'coverage/'
}*/
```
Also, you should adjust your webpack test configuration (located in ```cfg/test.js```) to reflect this:
```javascript
/* Uncomment this to prevent loading via isparta
{
test: /\.(js|jsx)$/,
loader: 'babel-loader',
include: [
path.join(__dirname, '/../src')
],
loader: 'isparta'
}*/
```
## License ## License
react-webpack-template is available under MIT-License and can therefore be used in any project free of charge. react-webpack-template is available under MIT-License and can therefore be used in any project free of charge.
+7 -1
View File
@@ -4,6 +4,9 @@ var _ = require('lodash');
var baseConfig = require('./base'); var baseConfig = require('./base');
// Add needed plugins here
var BowerWebpackPlugin = require('bower-webpack-plugin');
var config = _.merge({ var config = _.merge({
entry: [ entry: [
'webpack-dev-server/client?http://127.0.0.1:8000', 'webpack-dev-server/client?http://127.0.0.1:8000',
@@ -14,7 +17,10 @@ var config = _.merge({
devtool: 'eval', devtool: 'eval',
plugins: [ plugins: [
new webpack.HotModuleReplacementPlugin(), new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin() new webpack.NoErrorsPlugin(),
new BowerWebpackPlugin({
searchResolveModulesDirectories: false
})
] ]
}, baseConfig); }, baseConfig);
+6
View File
@@ -4,6 +4,9 @@ var _ = require('lodash');
var baseConfig = require('./base'); var baseConfig = require('./base');
// Add needed plugins here
var BowerWebpackPlugin = require('bower-webpack-plugin');
var config = _.merge({ var config = _.merge({
entry: path.join(__dirname, '../src/components/run'), entry: path.join(__dirname, '../src/components/run'),
cache: false, cache: false,
@@ -13,6 +16,9 @@ var config = _.merge({
new webpack.DefinePlugin({ new webpack.DefinePlugin({
'process.env.NODE_ENV': '"production"' 'process.env.NODE_ENV': '"production"'
}), }),
new BowerWebpackPlugin({
searchResolveModulesDirectories: false
}),
new webpack.optimize.UglifyJsPlugin(), new webpack.optimize.UglifyJsPlugin(),
new webpack.optimize.OccurenceOrderPlugin(), new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.AggressiveMergingPlugin(), new webpack.optimize.AggressiveMergingPlugin(),
+18 -1
View File
@@ -1,9 +1,21 @@
var path = require('path'); var path = require('path');
var srcPath = path.join(__dirname, '/../src/'); var srcPath = path.join(__dirname, '/../src/');
// Add needed plugins here
var BowerWebpackPlugin = require('bower-webpack-plugin');
module.exports = { module.exports = {
devtool: 'eval', devtool: 'eval',
module: { module: {
preLoaders: [
{
test: /\.(js|jsx)$/,
loader: 'isparta-instrumenter-loader',
include: [
path.join(__dirname, '/../src')
]
}
],
loaders: [ loaders: [
{ {
test: /\.(png|jpg|gif|woff|woff2|css|sass|scss|less|styl)$/, test: /\.(png|jpg|gif|woff|woff2|css|sass|scss|less|styl)$/,
@@ -30,5 +42,10 @@ module.exports = {
styles: srcPath + 'styles/', styles: srcPath + 'styles/',
config: srcPath + 'config/' + process.env.REACT_WEBPACK_ENV config: srcPath + 'config/' + process.env.REACT_WEBPACK_ENV
} }
} },
plugins: [
new BowerWebpackPlugin({
searchResolveModulesDirectories: false
})
]
}; };
+8 -1
View File
@@ -14,13 +14,20 @@ module.exports = function(config) {
mocha: {} mocha: {}
}, },
singleRun: true, singleRun: true,
reporters: ['mocha'], reporters: [ 'mocha', 'coverage' ],
preprocessors: { preprocessors: {
'test/loadtests.js': [ 'webpack', 'sourcemap' ] 'test/loadtests.js': [ 'webpack', 'sourcemap' ]
}, },
webpack: webpackCfg, webpack: webpackCfg,
webpackServer: { webpackServer: {
noInfo: true noInfo: true
},
coverageReporter: {
dir: 'coverage/',
reporters: [
{ type: 'html' },
{ type: 'text' }
]
} }
}); });
}; };
+8 -3
View File
@@ -1,6 +1,6 @@
{ {
"name": "react-webpack-template", "name": "react-webpack-template",
"version": "0.3.1", "version": "1.0.1",
"description": "A base skeleton template for react and webpack without task runners", "description": "A base skeleton template for react and webpack without task runners",
"main": "server.js", "main": "server.js",
"scripts": { "scripts": {
@@ -36,8 +36,11 @@
}, },
"homepage": "https://github.com/weblogixx/react-webpack-template#readme", "homepage": "https://github.com/weblogixx/react-webpack-template#readme",
"devDependencies": { "devDependencies": {
"babel-core": "^5.8.22", "babel-core": "^6.0.0",
"babel-loader": "^5.3.2", "babel-loader": "^6.0.0",
"babel-preset-es2015": "^6.0.15",
"babel-preset-react": "^6.0.15",
"bower-webpack-plugin": "^0.1.9",
"chai": "^3.2.0", "chai": "^3.2.0",
"copyfiles": "^0.2.1", "copyfiles": "^0.2.1",
"css-loader": "^0.21.0", "css-loader": "^0.21.0",
@@ -46,8 +49,10 @@
"eslint-plugin-react": "^3.3.0", "eslint-plugin-react": "^3.3.0",
"file-loader": "^0.8.4", "file-loader": "^0.8.4",
"glob": "^5.0.15", "glob": "^5.0.15",
"isparta-instrumenter-loader": "^1.0.0",
"karma": "^0.13.9", "karma": "^0.13.9",
"karma-chai": "^0.1.0", "karma-chai": "^0.1.0",
"karma-coverage": "^0.5.3",
"karma-mocha": "^0.2.0", "karma-mocha": "^0.2.0",
"karma-mocha-reporter": "^1.1.1", "karma-mocha-reporter": "^1.1.1",
"karma-phantomjs-launcher": "^0.2.1", "karma-phantomjs-launcher": "^0.2.1",
+4 -1
View File
@@ -1,2 +1,5 @@
var testsContext = require.context('.', true, /(Test\.js$)|(Helper\.js$)/); 'use strict';
// Add support for all files in the test directory
const testsContext = require.context('.', true, /(Test\.js$)|(Helper\.js$)/);
testsContext.keys().forEach(testsContext); testsContext.keys().forEach(testsContext);