diff --git a/js/app.js b/js/app.js index 58b25b2..8cddfa7 100755 --- a/js/app.js +++ b/js/app.js @@ -2,13 +2,12 @@ import 'todomvc-common/base.css'; import 'todomvc-app-css/index.css'; import View from './view'; -import helpers from './helpers'; +import {$on} from './helpers'; import Controller from './controller'; import Model from './model'; import Store from './store'; import Template from './template'; -var $on = helpers.$on; /** * Sets up a brand new Todo list. * diff --git a/js/helpers.js b/js/helpers.js index d9ff260..c50c04a 100755 --- a/js/helpers.js +++ b/js/helpers.js @@ -1,5 +1,5 @@ /*global NodeList */ -export default {qs, qsa, $on, $delegate, $parent}; +export {qs, qsa, $on, $delegate, $parent}; // Get element(s) by CSS selector: function qs(selector, scope) { diff --git a/js/view.js b/js/view.js index 4acacd6..6015ed5 100755 --- a/js/view.js +++ b/js/view.js @@ -9,7 +9,7 @@ import {qs, qsa, $on, $parent, $delegate} from './helpers'; * - render(command, parameterObject) * Renders the given command with the options */ -export default class View { +class View { constructor(template) { this.template = template; @@ -204,3 +204,5 @@ function _itemId(element) { var li = $parent(element, 'li'); return parseInt(li.dataset.id, 10); } + +export default View diff --git a/karma.conf.js b/karma.conf.js index b2c07c2..1bea3a2 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -72,13 +72,5 @@ module.exports = function (config) { // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: false, - - plugins: [ - require('karma-webpack'), - 'karma-jasmine', - 'karma-firefox-launcher', - 'karma-chrome-launcher', - 'karma-coverage' - ] }); }; diff --git a/package.json b/package.json index 44141f0..d526c22 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,27 @@ { "private": true, "dependencies": { - "todomvc-common": "1.0.2", - "todomvc-app-css": "2.0.1" + "todomvc-app-css": "2.0.4", + "todomvc-common": "1.0.2" }, "devDependencies": { - "babel": "5.8.21", - "babel-core": "5.8.22", - "babel-loader": "5.3.2", - "css-loader": "0.15.6", - "isparta": "3.0.3", - "isparta-loader": "0.2.0", - "istanbul": "0.3.17", - "jasmine-core": "2.3.4", - "karma": "0.13.8", - "karma-chrome-launcher": "0.2.0", - "karma-coverage": "0.5.0", - "karma-firefox-launcher": "0.1.6", - "karma-jasmine": "0.3.6", + "babel": "6.5.2", + "babel-core": "6.7.4", + "babel-loader": "6.2.4", + "babel-plugin-__coverage__": "0.1111.1", + "babel-preset-es2015-webpack": "6.4.0", + "babel-preset-stage-2": "6.5.0", + "css-loader": "0.23.1", + "jasmine-core": "2.4.1", + "karma": "0.13.22", + "karma-chrome-launcher": "0.2.3", + "karma-coverage": "0.5.5", + "karma-firefox-launcher": "0.1.7", + "karma-jasmine": "0.3.8", "karma-webpack": "1.7.0", - "style-loader": "0.12.3", - "webpack": "1.11.0", - "webpack-dev-server": "1.10.1" + "style-loader": "0.13.1", + "webpack": "2.1.0-beta.4", + "webpack-dev-server": "2.0.0-beta" }, "scripts": { "test": "NODE_ENV=test karma start", diff --git a/webpack.config.js b/webpack.config.js index 366a36f..695d37e 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,39 +1,62 @@ var path = require('path'); var config = { - entry: './app.js', - output: { - filename: 'bundle.js', - path: here() - }, - context: here('js'), - devtool: 'eval', - module: { - loaders: [ - {test: /\.css$/, loader: 'style!css'} - ] - } + entry: './app.js', + output: { + filename: 'bundle.js', + path: here() + }, + context: here('js'), + devtool: 'eval', + module: { + loaders: [ + {test: /\.css$/, loader: 'style!css'} + ] + } }; + config.module.loaders = getJSLoaders().concat(config.module.loaders); if (process.env.NODE_ENV === 'test') { - config.entry = './ControllerSpec.js'; - config.context = here('test'); + config.entry = './ControllerSpec.js'; + config.context = here('test'); } module.exports = config; function getJSLoaders() { - var jsLoaders = []; - if (process.env.NODE_ENV === 'test') { - jsLoaders.push({test: /js\/.*\.js$/, loader: 'isparta', exclude: /node_modules/}); - jsLoaders.push({test: /test\/.*\.js$/, loader: 'babel', exclude: /node_modules/}); - } else { - jsLoaders.push({test: /\.js$/, loader: 'babel', exclude: /node_modules/}); - } - return jsLoaders; + var jsLoaders = []; + var presets = ['es2015-webpack', 'stage-2'] + var test = process.env.NODE_ENV === 'test' + if (test) { + jsLoaders.push({ + test: /js\/.*\.js$/, + loader: 'babel', + exclude: /node_modules/, + query: { + presets: presets, + plugins: ['__coverage__'], + }, + }); + jsLoaders.push({ + test: /test\/.*\.js$/, + loader: 'babel', + exclude: /node_modules/, + query: { + presets: presets, + }, + }); + } else { + jsLoaders.push({ + test: /\.js$/, + loader: 'babel', + exclude: /node_modules/, + }); + } + return jsLoaders; } function here(d) { - return d ? path.join(__dirname, d) : __dirname; + return d ? path.join(__dirname, d) : __dirname; } +