Compare commits

..

25 Commits

Author SHA1 Message Date
Chris 45b31f0227 Fixed singleton loading problems from webpack config. 2016-03-29 14:11:12 +02:00
Chris ce025c4116 Changed paths to relative instead of absolute in webpack config 2016-03-29 13:59:01 +02:00
Chris f93fa39ebb 1.5.2 2016-03-29 08:35:57 +02:00
Chris 27fa8153f8 1.5.2: Adjusted package versions 2016-03-29 08:35:45 +02:00
Chris a75c391626 1.5.1 2016-03-09 19:16:56 +01:00
Chris 8faa282e31 Changed eslint config to 2.2.x. Fixes https://github.com/newtriks/generator-react-webpack/issues/196 2016-03-09 19:16:46 +01:00
Chris 19f9ea6fbb Added mocha to global eslint config. Fixes https://github.com/newtriks/generator-react-webpack/issues/195 2016-03-09 19:16:07 +01:00
Chris e89ec8315a 1.5.0 2016-02-23 21:21:34 +01:00
Chris 90e9e12fc6 Adjusted readme for new release 2016-02-23 21:21:24 +01:00
Chris 21db896237 Updated eslint react plugin 2016-02-23 21:16:21 +01:00
Chris 2c0b7cfda9 Upgraded linter to v2.0 (including needed plugins) 2016-02-18 11:20:25 +01:00
Chris 798e28c227 Updated glob dependency to new version 2016-02-12 09:04:43 +01:00
Chris d75c3b436b Merge pull request #25 from Igonato/master
PhantomJS Promise support
2016-02-08 10:12:37 +01:00
Ignat Shining de2e4bb5eb Move babel-polyfill to loadtests.js 2016-02-08 10:15:35 +03:00
Ignat Shining eceb3c6a28 PhantomJS Promise support 2016-02-06 23:39:16 +03:00
Chris 9da1b7caeb 1.4.0 2016-02-02 08:10:46 +01:00
Chris e1597a4807 Updated changelog for release 1.4 2016-02-02 08:10:39 +01:00
Chris 9b062b4d87 Merge pull request #24 from kashiif/fix-dev-config
Use defaultConfig.port in dev env instead of hard coded 8000
2016-02-02 07:52:11 +01:00
Kashif Iqbal Khan 0f019fe2c7 use defaultConfig.port in dev env instead of hard coded 8000 2016-02-01 20:19:59 +11:00
Chris f556d20d57 Updated changelog for 1.4 2016-01-29 21:43:49 +01:00
Chris b0014e00e0 Refactoring: Removed lodash as dependency, refactored webpack config (including minor speed improvements) 2016-01-29 21:42:24 +01:00
Chris b3abd3159d 1.3.1 2016-01-29 13:54:38 +01:00
Chris f56a70b13d Fix: Removed karma-phantomjs-shim from packages list and karma (it is no longer needed in phantomjs 2) 2016-01-29 13:54:28 +01:00
Chris 1a12e83eb0 1.3.0 2016-01-29 13:32:49 +01:00
Chris d0720735be Updated phantomjs to 2.0 2016-01-29 13:32:39 +01:00
19 changed files with 163 additions and 121 deletions
+10 -5
View File
@@ -3,15 +3,19 @@
"plugins": [
"react"
],
"ecmaFeatures": {
"jsx": true,
"modules": true
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"env": {
"browser": true,
"amd": true,
"es6": true,
"node": true
"node": true,
"mocha": true
},
"rules": {
"comma-dangle": 1,
@@ -25,6 +29,7 @@
"no-trailing-spaces": [1, { "skipBlankLines": true }],
"no-unreachable": 1,
"no-alert": 0,
"react/jsx-uses-react": 1
"react/jsx-uses-react": 1,
"react/jsx-uses-vars": 1
}
}
+33
View File
@@ -1,5 +1,38 @@
# react-webpack-template - Changelog
## 1.5.3:
1. Asset paths are now relative (makes it easier to use bundles in subdirectories)
2. Removed loading problems for webpack configurations overriding (see https://github.com/newtriks/generator-react-webpack/issues/194)
## 1.5.2:
1. Updated dependencies to latests (babel-eslint, eslint, karma-mocha-reporter, normalize.css)
## 1.5.1:
1. Emergency fix for correct eslint version (2.3 is currently buggy). Fixes https://github.com/newtriks/generator-react-webpack/issues/196
2. Added mocha to eslint global config as requested in https://github.com/newtriks/generator-react-webpack/issues/195
## 1.5.0:
1. Added babel polyfill to tests per default (provided by [Igonato](https://github.com/Igonato))
2. Updated eslint to version 2.0
3. Updated glob package to version 7.0
## 1.4.0:
1. Refactored webpack config to use Object.assign instead of lodash
2. Added dynamic port for webpack dev server (provided by [kashiif](https://github.com/kashiif))
## 1.3.1:
1. Removed karma-phantomjs-shim (with PhantomJS 2 there is no need for shims anymore)
## 1.3.0:
1. Updated phantomjs to 2.0
## 1.2.1:
1. Updated lodash to latest stable version
+3 -4
View File
@@ -9,15 +9,12 @@ 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] Mocha Unit tests
- [x] esLint Support
- [x] No dependency on grunt, gulp or the next hot taskrunner!
- [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. 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!
@@ -111,3 +108,5 @@ react-webpack-template is available under MIT-License and can therefore be used
- Christian Schilling (cs@weblogixx.de)
- Martin Jul (martin@mjul.com)
- Stephan Herzog (sthzgvie@gmail.com)
- Kashif Iqbal Khan
- Ignat Shining (mail@igonato.com)
+13 -49
View File
@@ -1,9 +1,6 @@
'use strict';
let path = require('path');
let port = 8000;
let srcPath = path.join(__dirname, '/../src');
let publicPath = '/assets/';
let defaultSettings = require('./defaults');
// Additional npm or bower modules to include in builds
// Add all foreign plugins you may need into this array
@@ -14,65 +11,32 @@ let additionalPaths = [];
module.exports = {
additionalPaths: additionalPaths,
port: port,
port: defaultSettings.port,
debug: true,
devtool: 'eval',
output: {
path: path.join(__dirname, '/../dist/assets'),
filename: 'app.js',
publicPath: publicPath
publicPath: `.${defaultSettings.publicPath}`
},
devServer: {
contentBase: './src/',
historyApiFallback: true,
hot: true,
port: port,
publicPath: publicPath,
port: defaultSettings.port,
publicPath: defaultSettings.publicPath,
noInfo: false
},
resolve: {
extensions: ['', '.js', '.jsx'],
alias: {
actions: srcPath + '/actions/',
components: srcPath + '/components/',
sources: srcPath + '/sources/',
stores: srcPath + '/stores/',
styles: srcPath + '/styles/',
config: srcPath + '/config/' + process.env.REACT_WEBPACK_ENV
actions: `${defaultSettings.srcPath}/actions/`,
components: `${defaultSettings.srcPath}/components/`,
sources: `${defaultSettings.srcPath}/sources/`,
stores: `${defaultSettings.srcPath}/stores/`,
styles: `${defaultSettings.srcPath}/styles/`,
config: `${defaultSettings.srcPath}/config/` + process.env.REACT_WEBPACK_ENV
}
},
module: {
preLoaders: [
{
test: /\.(js|jsx)$/,
include: srcPath,
loader: 'eslint-loader'
}
],
loaders: [
{
test: /\.css$/,
loader: 'style-loader!css-loader'
},
{
test: /\.sass/,
loader: 'style-loader!css-loader!sass-loader?outputStyle=expanded&indentedSyntax'
},
{
test: /\.scss/,
loader: 'style-loader!css-loader!sass-loader?outputStyle=expanded'
},
{
test: /\.less/,
loader: 'style-loader!css-loader!less-loader'
},
{
test: /\.styl/,
loader: 'style-loader!css-loader!stylus-loader'
},
{
test: /\.(png|jpg|gif|woff|woff2)$/,
loader: 'url-loader?limit=8192'
}
]
}
module: {}
};
+60
View File
@@ -0,0 +1,60 @@
/**
* Function that returns default values.
* Used because Object.assign does a shallow instead of a deep copy.
* Using [].push will add to the base array, so a require will alter
* the base array output.
*/
'use strict';
const path = require('path');
const srcPath = path.join(__dirname, '/../src');
const dfltPort = 8000;
/**
* Get the default modules object for webpack
* @return {Object}
*/
function getDefaultModules() {
return {
preLoaders: [
{
test: /\.(js|jsx)$/,
include: srcPath,
loader: 'eslint-loader'
}
],
loaders: [
{
test: /\.css$/,
loader: 'style-loader!css-loader'
},
{
test: /\.sass/,
loader: 'style-loader!css-loader!sass-loader?outputStyle=expanded&indentedSyntax'
},
{
test: /\.scss/,
loader: 'style-loader!css-loader!sass-loader?outputStyle=expanded'
},
{
test: /\.less/,
loader: 'style-loader!css-loader!less-loader'
},
{
test: /\.styl/,
loader: 'style-loader!css-loader!stylus-loader'
},
{
test: /\.(png|jpg|gif|woff|woff2)$/,
loader: 'url-loader?limit=8192'
}
]
};
}
module.exports = {
srcPath: srcPath,
publicPath: '/assets/',
port: dfltPort,
getDefaultModules: getDefaultModules
};
+8 -8
View File
@@ -2,31 +2,31 @@
let path = require('path');
let webpack = require('webpack');
let _ = require('lodash');
let baseConfig = require('./base');
let defaultSettings = require('./defaults');
// Add needed plugins here
let BowerWebpackPlugin = require('bower-webpack-plugin');
let config = _.merge({
let config = Object.assign({}, baseConfig, {
entry: [
'webpack-dev-server/client?http://127.0.0.1:8000',
'webpack-dev-server/client?http://127.0.0.1:' + defaultSettings.port,
'webpack/hot/only-dev-server',
'./src/index'
],
cache: true,
devtool: 'eval',
devtool: 'eval-source-map',
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin(),
new BowerWebpackPlugin({
searchResolveModulesDirectories: false
})
]
}, baseConfig);
],
module: defaultSettings.getDefaultModules()
});
// Add needed loaders
// Add needed loaders to the defaults here
config.module.loaders.push({
test: /\.(js|jsx)$/,
loader: 'react-hot!babel-loader',
+6 -4
View File
@@ -2,14 +2,14 @@
let path = require('path');
let webpack = require('webpack');
let _ = require('lodash');
let baseConfig = require('./base');
let defaultSettings = require('./defaults');
// Add needed plugins here
let BowerWebpackPlugin = require('bower-webpack-plugin');
let config = _.merge({
let config = Object.assign({}, baseConfig, {
entry: path.join(__dirname, '../src/index'),
cache: false,
devtool: 'sourcemap',
@@ -25,9 +25,11 @@ let config = _.merge({
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.AggressiveMergingPlugin(),
new webpack.NoErrorsPlugin()
]
}, baseConfig);
],
module: defaultSettings.getDefaultModules()
});
// Add needed loaders to the defaults here
config.module.loaders.push({
test: /\.(js|jsx)$/,
loader: 'babel',
Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

+1 -1
View File
@@ -9,7 +9,7 @@ module.exports = function(config) {
],
port: 8080,
captureTimeout: 60000,
frameworks: [ 'phantomjs-shim', 'mocha', 'chai' ],
frameworks: [ 'mocha', 'chai' ],
client: {
mocha: {}
},
+10 -11
View File
@@ -1,6 +1,6 @@
{
"name": "react-webpack-template",
"version": "1.2.1",
"version": "1.5.2",
"description": "A base skeleton template for react and webpack without task runners",
"main": "server.js",
"scripts": {
@@ -37,35 +37,34 @@
"homepage": "https://github.com/weblogixx/react-webpack-template#readme",
"devDependencies": {
"babel-core": "^6.0.0",
"babel-eslint": "^5.0.0-beta4",
"babel-eslint": "^6.0.0",
"babel-loader": "^6.0.0",
"babel-polyfill": "^6.3.14",
"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.23.0",
"eslint": "^1.2.1",
"eslint": "^2.2.0",
"eslint-loader": "^1.0.0",
"eslint-plugin-react": "^3.3.0",
"eslint-plugin-react": "^4.0.0",
"file-loader": "^0.8.4",
"glob": "^6.0.0",
"glob": "^7.0.0",
"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",
"karma-phantomjs-shim": "^1.1.1",
"karma-mocha-reporter": "^2.0.0",
"karma-phantomjs-launcher": "^1.0.0",
"karma-sourcemap-loader": "^0.3.5",
"karma-webpack": "^1.7.0",
"lodash": "^4.0.0",
"minimist": "^1.2.0",
"mocha": "^2.2.5",
"null-loader": "^0.1.1",
"open": "0.0.5",
"phantomjs": "^1.9.18",
"phantomjs-prebuilt": "^2.0.0",
"react-addons-test-utils": "^0.14.0",
"react-hot-loader": "^1.2.9",
"rimraf": "^2.4.3",
@@ -76,7 +75,7 @@
},
"dependencies": {
"core-js": "^2.0.0",
"normalize.css": "^3.0.3",
"normalize.css": "^4.0.0",
"react": "^0.14.0",
"react-dom": "^0.14.0"
}
+6 -5
View File
@@ -1,12 +1,13 @@
/*eslint no-console:0 */
'use strict';
require('core-js/fn/object/assign');
var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server');
var config = require('./webpack.config');
var open = require('open');
const webpack = require('webpack');
const WebpackDevServer = require('webpack-dev-server');
const config = require('./webpack.config');
const open = require('open');
new WebpackDevServer(webpack(config), config.devServer)
.listen(config.port, 'localhost', function(err) {
.listen(config.port, 'localhost', (err) => {
if (err) {
console.log(err);
}
+1 -1
View File
@@ -1,4 +1,4 @@
require('normalize.css');
require('normalize.css/normalize.css');
require('styles/App.css');
import React from 'react';
-1
View File
@@ -1,6 +1,5 @@
'use strict';
// Settings configured here will be merged into the final config object.
export default {
}
-1
View File
@@ -2,7 +2,6 @@
import baseConfig from './base';
let config = {
appEnv: 'dev' // feel free to remove the appEnv property here
};
-2
View File
@@ -2,10 +2,8 @@
import baseConfig from './base';
let config = {
appEnv: 'dist' // feel free to remove the appEnv property here
};
export default Object.freeze(Object.assign({}, baseConfig, config));
-2
View File
@@ -2,10 +2,8 @@
import baseConfig from './base';
let config = {
appEnv: 'test' // don't remove the appEnv property here
};
export default Object.freeze(Object.assign(baseConfig, config));
+1 -1
View File
@@ -11,6 +11,6 @@
<div id="app">APPLICATION CONTENT</div>
<script>__REACT_DEVTOOLS_GLOBAL_HOOK__ = parent.__REACT_DEVTOOLS_GLOBAL_HOOK__</script>
<script type="text/javascript" src="assets/app.js"></script>
<script type="text/javascript" src="./assets/app.js"></script>
</body>
</html>
+1
View File
@@ -1,5 +1,6 @@
'use strict';
require('babel-polyfill');
require('core-js/fn/object/assign');
// Add support for all files in the test directory
+10 -26
View File
@@ -1,14 +1,14 @@
'use strict';
var path = require('path');
var args = require('minimist')(process.argv.slice(2));
const path = require('path');
const args = require('minimist')(process.argv.slice(2));
// List of allowed environments
var allowedEnvs = ['dev', 'dist', 'test'];
const allowedEnvs = ['dev', 'dist', 'test'];
// Set the correct environment
var env;
if(args._.length > 0 && args._.indexOf('start') !== -1) {
if (args._.length > 0 && args._.indexOf('start') !== -1) {
env = 'test';
} else if (args.env) {
env = args.env;
@@ -17,32 +17,16 @@ if(args._.length > 0 && args._.indexOf('start') !== -1) {
}
process.env.REACT_WEBPACK_ENV = env;
// Get available configurations
var configs = {
base: require(path.join(__dirname, 'cfg/base')),
dev: require(path.join(__dirname, 'cfg/dev')),
dist: require(path.join(__dirname, 'cfg/dist')),
test: require(path.join(__dirname, 'cfg/test'))
};
/**
* Get an allowed environment
* @param {String} env
* @return {String}
*/
function getValidEnv(env) {
var isValid = env && env.length > 0 && allowedEnvs.indexOf(env) !== -1;
return isValid ? env : 'dev';
}
/**
* Build the webpack configuration
* @param {String} env Environment to use
* @param {String} wantedEnv The wanted environment
* @return {Object} Webpack config
*/
function buildConfig(env) {
var usedEnv = getValidEnv(env);
return configs[usedEnv];
function buildConfig(wantedEnv) {
let isValid = wantedEnv && wantedEnv.length > 0 && allowedEnvs.indexOf(wantedEnv) !== -1;
let validEnv = isValid ? wantedEnv : 'dev';
let config = require(path.join(__dirname, 'cfg/' + validEnv));
return config;
}
module.exports = buildConfig(env);