Compare commits

...

30 Commits

Author SHA1 Message Date
Chris fb1f271f6b 1.0.1 2015-11-18 08:12:34 +01:00
Chris 5d512c5bf5 Adjusted changelog to reflect isparta update 2015-11-18 08:08:51 +01:00
Chris 9ecfa9ef90 Added fix for isparta version update 2015-11-18 08:06:51 +01:00
Chris 614fcfc54e 1.0.0 2015-11-17 07:39:46 +01:00
Chris bbd0f7666e Updated babel to 6.0 2015-11-17 07:39:34 +01:00
Chris 33150f0cf6 Reverted fix for config merge. 2015-10-29 08:34:29 +01:00
Chris 831fb6f8b9 Merge branch 'master' of https://github.com/weblogixx/react-webpack-template 2015-10-29 08:32:34 +01:00
Chris 2538e2c405 Reverted fix for config merge. 2015-10-29 08:32:27 +01:00
Chris 4cd213706e Merge pull request #10 from mjul/merge_order
Fix override order for base.js and dev.js / dist.js
2015-10-29 08:03:40 +01:00
Martin Jul b3f99eb73e Fix override order for base.js and dev.js / dist.js 2015-10-27 23:27:18 +01:00
Chris a6867e3c9f 0.3.2 2015-10-27 08:47:03 +01:00
Chris 827dd86a3c Added support for bower components, as requested in https://github.com/weblogixx/react-webpack-template/issues/8 2015-10-27 08:45:12 +01:00
Chris 89f6f1701b Added support for coverage reporting (as requested in https://github.com/newtriks/generator-react-webpack/issues/158) 2015-10-27 08:08:26 +01:00
Chris ed4e8a17f3 0.3.1 2015-10-23 09:46:08 +02:00
Chris 99ef0116e0 Updated changelog for 0.3.1 2015-10-23 09:45:53 +02:00
Chris 3027a257aa Added new dev dependencies and some badges 2015-10-23 09:41:39 +02:00
Chris 65ffe317bc Merge pull request #7 from mjul/autowatch
Update by @mjul: Don't rely Karma autoWatch being true in config
2015-10-23 00:08:57 +02:00
Martin Jul 61a6776cc8 Don't rely Karma autoWatch being true in config 2015-10-22 23:36:13 +02:00
Chris d548936421 Updated changelog to reflect new pull requests. 2015-10-22 12:47:03 +02:00
Chris d2b6d1a7ac 0.3.0 2015-10-22 12:44:58 +02:00
Chris d49fa2cc22 Merge pull request #6 from sthzg/feat_check_production_builds
Feature from @sthzg: #4 -- added DefinePlugin to plugins for dist builds (see https://github.com/weblogixx/react-webpack-template/issues/4)
2015-10-22 12:41:27 +02:00
sthzg 448ad72b83 #4 -- added DefinePlugin to plugins for dist builds 2015-10-22 10:58:39 +02:00
Chris e167efec72 Updated README with new phrasing (it IS the base for generator-react-webpack now) 2015-10-21 16:06:42 +02:00
Chris 71d7fa388d Merge pull request #5 from sthzg/feat_env_based_app_configs
Feature from @sthzg: #1 -- added support to import app configuration based on --env
2015-10-21 15:47:36 +02:00
sthzg 236012dea6 #1 -- added support to import app configuration based on --env 2015-10-21 12:37:52 +02:00
Chris 8550022eb5 Merge pull request #3 from mjul/patch-1
Feature by @mjul: Add target to run tests continuously
2015-10-21 07:45:25 +02:00
Martin Jul 1424f8f41d Add info on running tests continuously 2015-10-20 16:25:32 +02:00
Martin Jul e710db370c Add target to run tests continuously
Enables `npm run test:watch`
2015-10-20 16:15:57 +02:00
Chris 00414460b2 0.2.2 2015-10-19 10:46:21 +02:00
Chris f1eb6504e0 Added current version of webpack-dev-server to dependencies list 2015-10-19 10:46:10 +02:00
18 changed files with 194 additions and 29 deletions
+6
View File
@@ -0,0 +1,6 @@
{
"presets": [
"es2015",
"react"
]
}
+3
View File
@@ -25,3 +25,6 @@ build/Release
# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
node_modules
# Bower
bower_components/
+25
View File
@@ -1,5 +1,30 @@
# 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:
___Upgrades___:
1. Added bugfix for tests in watch mode (could be overridden by config)
2. Added new badges to README
3. Updated devDependencies to current ones
## 0.3.0:
___Upgrades___:
1. Added webpacks define plugin for dist version
2. Added new task ```test:watch``` to watch for changes
## 0.2.0:
___Upgrades:___
1. Updated React from 0.13 to 0.14 (using ```^0.14```) as version string. This included minor code changes for components (now use the splitted "React"-Package) and the runner (Using React-DOM).
+1 -2
View File
@@ -1,6 +1,6 @@
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
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,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+41 -11
View File
@@ -1,29 +1,30 @@
# Welcome to react-webpack-template
> This repository holds a base template for the new version of generator-react-webpack.
It can be understood as the prototype for newly generated projects.
> This repository holds the base template for the current version of [generator-react-webpack](https://github.com/newtriks/generator-react-webpack).
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)
[![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")
## Features
The following features are planned to be included in the final version:
The following features are currently included:
- [x] Webpack and Webpack-Dev-Server, including hot-loader
- [x] Babel and JSX
- [x] Mocha Unit tests (*optional*)
- [x] EsLint Support
- [x] esLint Support
- [x] No dependency on grunt, gulp or the next hot taskrunner!
- [x] The dynamic webpack configuration is clunky, there must be a better way to do that!
- [x] Karmas webpack configuration is not included in the global webpack.config.js file, but it really should
- [x] Support for environment-specific configuration files
- [x] Support for code coverage via [isparta-loader](https://github.com/deepsweet/isparta-loader)
## Todo
- [ ] Better performance for webpack builds
## What is it for?
This template can be used directly for the creation of new projects.
Also it will be the "template" for the next version of generator-react-webpack.
This template can be used directly for the creation of new projects. When using it like this, make sure to ___not___ install it via npm but download it directly. The template is (nearly) useless for itself when downloaded via npm!
Basically, it is currently only used as the base template of [generator-react-webpack](https://github.com/newtriks/generator-react-webpack).
## Using it
The template is available via webpack. The following commands are available:
The template uses webpack as build tool to serve files and run tests. The following commands are available:
```bash
# Start for development
npm start # or
@@ -38,6 +39,9 @@ npm run dist
# Run unit tests
npm test
# Run the unit tests continuously (repeat the test when code changes are saved)
npm run test:watch
# Lint all files in src (also automatically done AFTER tests are run)
npm run lint
@@ -61,9 +65,35 @@ webpack-dev-server --env=dev
webpack --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
react-webpack-template is available under MIT-License and can therefore be used in any project free of charge.
## Contributors
- Weblogixx (cs@weblogixx.de)
- Christian Schilling (cs@weblogixx.de)
- Martin Jul (martin@mjul.com)
- Stephan Herzog (sthzgvie@gmail.com)
+2 -1
View File
@@ -27,7 +27,8 @@ module.exports = {
components: srcPath + '/components/',
sources: srcPath + '/sources/',
stores: srcPath + '/stores/',
styles: srcPath + '/styles/'
styles: srcPath + '/styles/',
config: srcPath + '/config/' + process.env.REACT_WEBPACK_ENV
}
},
module: {
+7 -1
View File
@@ -4,6 +4,9 @@ var _ = require('lodash');
var baseConfig = require('./base');
// Add needed plugins here
var BowerWebpackPlugin = require('bower-webpack-plugin');
var config = _.merge({
entry: [
'webpack-dev-server/client?http://127.0.0.1:8000',
@@ -14,7 +17,10 @@ var config = _.merge({
devtool: 'eval',
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin()
new webpack.NoErrorsPlugin(),
new BowerWebpackPlugin({
searchResolveModulesDirectories: false
})
]
}, baseConfig);
+9
View File
@@ -4,12 +4,21 @@ var _ = require('lodash');
var baseConfig = require('./base');
// Add needed plugins here
var BowerWebpackPlugin = require('bower-webpack-plugin');
var config = _.merge({
entry: path.join(__dirname, '../src/components/run'),
cache: false,
devtool: 'sourcemap',
plugins: [
new webpack.optimize.DedupePlugin(),
new webpack.DefinePlugin({
'process.env.NODE_ENV': '"production"'
}),
new BowerWebpackPlugin({
searchResolveModulesDirectories: false
}),
new webpack.optimize.UglifyJsPlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.AggressiveMergingPlugin(),
+21 -3
View File
@@ -1,9 +1,21 @@
var path = require('path');
var srcPath = path.join(__dirname, '/../src/');
// Add needed plugins here
var BowerWebpackPlugin = require('bower-webpack-plugin');
module.exports = {
devtool: 'eval',
module: {
preLoaders: [
{
test: /\.(js|jsx)$/,
loader: 'isparta-instrumenter-loader',
include: [
path.join(__dirname, '/../src')
]
}
],
loaders: [
{
test: /\.(png|jpg|gif|woff|woff2|css|sass|scss|less|styl)$/,
@@ -20,14 +32,20 @@ module.exports = {
]
},
resolve: {
extensions: ['', '.js', '.jsx'],
extensions: [ '', '.js', '.jsx' ],
alias: {
actions: srcPath + 'actions/',
helpers: path.join(__dirname, '/../test/helpers'),
components: srcPath + 'components/',
sources: srcPath + 'sources/',
stores: srcPath + 'stores/',
styles: srcPath + 'styles/'
styles: srcPath + 'styles/',
config: srcPath + 'config/' + process.env.REACT_WEBPACK_ENV
}
}
},
plugins: [
new BowerWebpackPlugin({
searchResolveModulesDirectories: false
})
]
};
+11 -4
View File
@@ -3,24 +3,31 @@ var webpackCfg = require('./webpack.config');
module.exports = function(config) {
config.set({
basePath: '',
browsers: ['PhantomJS'],
browsers: [ 'PhantomJS' ],
files: [
'test/loadtests.js'
],
port: 8080,
captureTimeout: 60000,
frameworks: ['phantomjs-shim', 'mocha', 'chai'],
frameworks: [ 'phantomjs-shim', 'mocha', 'chai' ],
client: {
mocha: {}
},
singleRun: true,
reporters: ['mocha'],
reporters: [ 'mocha', 'coverage' ],
preprocessors: {
'test/loadtests.js': ['webpack', 'sourcemap']
'test/loadtests.js': [ 'webpack', 'sourcemap' ]
},
webpack: webpackCfg,
webpackServer: {
noInfo: true
},
coverageReporter: {
dir: 'coverage/',
reporters: [
{ type: 'html' },
{ type: 'text' }
]
}
});
};
+13 -6
View File
@@ -1,11 +1,12 @@
{
"name": "react-webpack-template",
"version": "0.2.1",
"version": "1.0.1",
"description": "A base skeleton template for react and webpack without task runners",
"main": "server.js",
"scripts": {
"start": "node server.js --env=dev",
"test": "karma start",
"test:watch": "karma start --autoWatch=true --singleRun=false",
"posttest": "npm run lint",
"serve": "node server.js --env=dev",
"serve:dist": "node server.js --env=dist",
@@ -35,17 +36,23 @@
},
"homepage": "https://github.com/weblogixx/react-webpack-template#readme",
"devDependencies": {
"babel-core": "^5.8.22",
"babel-loader": "^5.3.2",
"babel-core": "^6.0.0",
"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",
"copyfiles": "^0.2.1",
"css-loader": "^0.16.0",
"css-loader": "^0.21.0",
"eslint": "^1.2.1",
"eslint-loader": "^1.0.0",
"eslint-plugin-react": "^3.3.0",
"file-loader": "^0.8.4",
"glob": "^5.0.15",
"isparta-instrumenter-loader": "^1.0.0",
"karma": "^0.13.9",
"karma-chai": "^0.1.0",
"karma-coverage": "^0.5.3",
"karma-mocha": "^0.2.0",
"karma-mocha-reporter": "^1.1.1",
"karma-phantomjs-launcher": "^0.2.1",
@@ -59,10 +66,10 @@
"phantomjs": "^1.9.18",
"react-hot-loader": "^1.2.9",
"rimraf": "^2.4.3",
"style-loader": "^0.12.3",
"style-loader": "^0.13.0",
"url-loader": "^0.5.6",
"webpack": "^1.12.0",
"webpack-dev-server": "^1.10.1"
"webpack-dev-server": "^1.12.0"
},
"dependencies": {
"lodash": "^3.10.1",
+17
View File
@@ -0,0 +1,17 @@
# About this folder
This folder holds configuration files for different environments.
You can use it to provide your app with different settings based on the
current environment, e.g. to configure different API base urls depending on
whether your setup runs in dev mode or is built for distribution.
You can include the configuration into your code like this:
```javascript
let react = require('react/addons');
let config = require('config');
class MyComponent extends React.Component {
constructor(props) {
super(props);
let currentAppEnv = config.appEnv;
}
}
```
+7
View File
@@ -0,0 +1,7 @@
'use strict';
const config = {
appEnv: 'dev' // feel free to remove the appEnv property here
};
export default config;
+7
View File
@@ -0,0 +1,7 @@
'use strict';
const config = {
appEnv: 'dist' // feel free to remove the appEnv property here
};
export default config;
+7
View File
@@ -0,0 +1,7 @@
'use strict';
const config = {
appEnv: 'test' // don't remove the appEnv property here
};
export default config;
+12
View File
@@ -0,0 +1,12 @@
/*eslint-env node, mocha */
/*global expect */
/*eslint no-console: 0*/
'use strict';
import config from 'config';
describe('appEnvConfigTests', () => {
it('should load app config file depending on current --env', () => {
expect(config.appEnv).to.equal('test');
});
});
+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);
+1
View File
@@ -15,6 +15,7 @@ if(args._.length > 0 && args._.indexOf('start') !== -1) {
} else {
env = 'dev';
}
process.env.REACT_WEBPACK_ENV = env;
// Get available configurations
var configs = {