jspm + KarmaJS - 从watch中排除文件,但不从serve中排除

时间:2015-08-17 17:22:06

标签: karma-runner jspm gulp-karma

我无法弄清楚如何让业力不留意 jspm_packages / 文件夹中的更改。 如果我尝试将'jspm_packages'添加到exclude部分,那么我会收到以下错误:

DEBUG [web-server]: serving (cached): /Users/jm/dev/monka/node_modules/gulp-helpers/node_modules/karma-jspm/src/adapter.js
PhantomJS 1.9.8 (Mac OS X 0.0.0) ERROR
  ReferenceError: Can't find variable: System
  at /Users/jm/dev/monka/system.config.js:1

ERROR [PhantomJS 1.9.8 (Mac OS X 0.0.0)]: ReferenceError: Can't find variable: System
at http://localhost:9876/base/system.config.js?31f6cba38ed6c99ea3e9b4bc926e8ecfd6de8bd7:1

这是我的 karma.conf.js

module.exports = function(config) {
  config.set({

    plugins: [
      'karma-jspm',
      'karma-jasmine',
      'karma-beep-reporter',
      'karma-verbose-reporter',
      'karma-babel-preprocessor',
      'karma-phantomjs-launcher'
    ],

    basePath   :  '',                 // base path that will be used to resolve all patterns (eg. files, exclude)
    frameworks : ['jspm', 'jasmine'], // frameworks to use available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    browsers   : ['PhantomJS'],       // start these browsers available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    reporters  : ['progress', 'beep', 'verbose'/*, 'coverage'*/], // test results reporter to use possible values: 'dots', 'progress' available reporters: https://npmjs.org/browse/keyword/karma-reporter
    singleRun  : false,  // Continuous Integration mode if true, Karma captures browsers, runs the tests and exits
    autoWatch  : true,  // Enable / disable watching file and executing tests whenever any file changes
    colors     : true,  // enable / disable colors in the output (reporters and logs)
    files      : [],    // list of files / patterns to load in the browser

    jspm: {
      config     : 'system.config.js',
      loadFiles  : ['test-unit/**/*.js'],
      serveFiles : ['dist/**/**']
    },

    proxies: {
      '/base/app'      : '/base/dist/app',
      '/base/common'   : '/base/dist/common',
      '/jspm_packages' : '/base/jspm_packages'
    },

    exclude: [
      'coverage/**',
      'typings/**',
      'dist/**/*.js.map'
    ],

    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_DEBUG,

    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
      'src/**/*.js' : ['babel', 'coverage']
    },

    babelPreprocessor: {
      options: { sourceMap:'inline', modules:'system' }
    },

    coverageReporter: { type:'html', dir:'coverage/' }

  });
};

1 个答案:

答案 0 :(得分:0)

我认为使用Karma无法排除被监视的文件也应该被提供。 通过排除jspm_packages,Karma停止服务于位于jspm_packages文件夹中的system.js,因此未定义System。

如果你想在测试运行期间摆脱服务jspm_packages,你可以尝试在创建一个自执行的bundle之后运行测试,然后只为该bundle提供服务。

请参阅https://github.com/jspm/jspm-cli/blob/master/docs/production-workflows.md#creating-a-self-executing-bundle