From f9e9eac4a89e5e3436e09bb7b8f9d1b302622b92 Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Mon, 23 May 2016 19:49:35 -0600 Subject: [PATCH] update some things with the webpack config --- .babelrc | 2 +- .eslintrc | 9 ++++- karma.conf.js | 7 ++-- package.json | 17 +++++----- .../js/controller.test.js | 2 +- test/.eslintrc | 9 ----- webpack.config.js | 33 ++++++++++--------- 7 files changed, 39 insertions(+), 40 deletions(-) rename test/ControllerSpec.js => src/js/controller.test.js (99%) delete mode 100644 test/.eslintrc diff --git a/.babelrc b/.babelrc index f3683c9..f5c47bf 100644 --- a/.babelrc +++ b/.babelrc @@ -3,7 +3,7 @@ "env": { "test": { "plugins": [ - ["__coverage__", {"ignore": "test"}] + ["__coverage__", {"ignore": "*.test.*"}] ] } } diff --git a/.eslintrc b/.eslintrc index 8f58d93..69ddc6a 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,7 +1,7 @@ { "extends": ["kentcdodds/es-next"], "rules": { - // these are only here because I didn't + // these are only here because I did not // want to update the entire codebase ¯\_(ツ)_/¯ "func-names": 0, "no-var": 0, @@ -10,5 +10,12 @@ "valid-jsdoc": 0, "vars-on-top": 0, "complexity": [2, 6], + }, + "globals": { + "jasmine": false, + "describe": false, + "it": false, + "beforeEach": false, + "expect": false, } } diff --git a/karma.conf.js b/karma.conf.js index d60dcfa..d7e6c17 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,14 +1,15 @@ -const webpackConfig = require('./webpack.config') +const webpackConfig = require('./webpack.config')({test: true}) +process.env.BABEL_ENV = 'test' // so we load the correct babel plugins require('babel-register') module.exports = function setKarmaConfig(config) { config.set({ basePath: '', frameworks: ['jasmine'], - files: ['test/**/*Spec.js'], + files: ['src/**/*.test.js'], exclude: [], preprocessors: { - 'test/**/*Spec.js': ['webpack'], + 'src/**/*.test.js': ['webpack'], }, webpack: webpackConfig, webpackMiddleware: {noInfo: true}, diff --git a/package.json b/package.json index 51f9322..060cbf8 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,6 @@ "babel-preset-es2015-webpack": "6.4.1", "babel-preset-stage-2": "6.5.0", "cpy-cli": "1.0.0", - "cross-env": "1.0.7", "css-loader": "0.23.1", "eslint": "2.9.0", "eslint-config-kentcdodds": "6.2.1", @@ -32,7 +31,7 @@ "style-loader": "0.13.1", "webpack": "2.1.0-beta.7", "webpack-dev-server": "2.0.0-beta", - "webpack-validator": "1.5.0" + "webpack-validator": "2.1.0" }, "config": { "ghooks": { @@ -40,20 +39,20 @@ } }, "scripts": { - "test": "cross-env NODE_ENV=test karma start", - "watch:test": "cross-env NODE_ENV=test karma start --auto-watch --no-single-run", + "test": "karma start", + "watch:test": "karma start --auto-watch --no-single-run", "validate": "npm-run-all --parallel validate-webpack:* lint test", - "validate-webpack:dev": "cross-env NODE_ENV=development webpack-validator webpack.config.js", - "validate-webpack:prod": "cross-env NODE_ENV=production webpack-validator webpack.config.js", + "validate-webpack:dev": "webpack-validator webpack.config.js --env.dev", + "validate-webpack:prod": "webpack-validator webpack.config.js --env.prod", "clean-dist": "rimraf dist", "copy-files": "cpy src/index.html src/favicon.ico dist", "clean-and-copy": "npm run clean-dist && npm run copy-files", "prestart": "npm run clean-and-copy", - "start": "cross-env NODE_ENV=development webpack-dev-server --content-base dist", + "start": "webpack-dev-server --env.dev --content-base dist", "prebuild": "npm run clean-and-copy", "prebuild:prod": "npm run clean-and-copy", - "build": "cross-env NODE_ENV=development webpack", - "build:prod": "cross-env NODE_ENV=production webpack -p", + "build": "webpack --env.dev", + "build:prod": "webpack --env.prod -p", "lint": "eslint ." } } diff --git a/test/ControllerSpec.js b/src/js/controller.test.js similarity index 99% rename from test/ControllerSpec.js rename to src/js/controller.test.js index 527d8db..93e2b28 100755 --- a/test/ControllerSpec.js +++ b/src/js/controller.test.js @@ -1,4 +1,4 @@ -import Controller from '../src/js/controller' +import Controller from './controller' describe('controller', () => { var subject, model, view diff --git a/test/.eslintrc b/test/.eslintrc deleted file mode 100644 index 1185edc..0000000 --- a/test/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "globals": { - "jasmine": false, - "describe": false, - "it": false, - "beforeEach": false, - "expect": false, - } -} diff --git a/webpack.config.js b/webpack.config.js index 5c47968..d74709a 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,18 +1,19 @@ const {resolve} = require('path') -const isProd = process.env.NODE_ENV === 'production' -module.exports = { - entry: './js/app.js', - output: { - filename: 'bundle.js', - path: resolve(__dirname, 'dist'), - pathinfo: true, - }, - context: resolve(__dirname, 'src'), - devtool: isProd ? 'source-map' : 'eval', - module: { - loaders: [ - {test: /\.js$/, loader: 'babel!eslint', exclude: /node_modules/}, - {test: /\.css$/, loader: 'style!css'}, - ], - }, +module.exports = env => { + return { + entry: './js/app.js', + output: { + filename: 'bundle.js', + path: resolve(__dirname, 'dist'), + pathinfo: true, + }, + context: resolve(__dirname, 'src'), + devtool: env.prod ? 'source-map' : 'eval', + module: { + loaders: [ + {test: /\.js$/, loader: 'babel!eslint', exclude: /node_modules/}, + {test: /\.css$/, loader: 'style!css'}, + ], + }, + } }