首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从命令行/npm脚本运行文件更改的业力

从命令行/npm脚本运行文件更改的业力
EN

Stack Overflow用户
提问于 2017-08-09 14:40:44
回答 1查看 1.2K关注 0票数 0

我有一个应用程序的单元测试与因果报应&摩卡和报告通过伊斯坦布尔。

国家预防机制脚本:

代码语言:javascript
复制
"test": "cross-env BABEL_ENV=test karma start tests/karma.conf.js --single-run",

我想要做的是在开发过程中运行一个脚本,它将监视测试&应用程序文件中的更改,并根据需要重新运行测试。

我试着用--single-run替换--auto-watch

代码语言:javascript
复制
"test:watch": "cross-env BABEL_ENV=test karma start tests/karma.conf.js --auto-watch",

但是这个重新运行是连续的--一旦一轮测试完成,它就会重新开始。

karma.conf.js:

代码语言:javascript
复制
var webpackConfig = require('../build/webpack.conf.test');

module.exports = function (config) {
  config.set({
    browsers: ['PhantomJS'],
    frameworks: ['mocha', 'sinon-chai', 'phantomjs-shim'],
    reporters: ['spec', 'coverage'],
    files: ['./index.js'],
    preprocessors: {
      './index.js': ['webpack', 'sourcemap'],
    },
    webpack: webpackConfig,
    webpackMiddleware: {
      noInfo: true
    },
    coverageReporter: {
      dir: './coverage',
      reporters: [
        { type: 'lcov', subdir: '.' },
        { type: 'text' }
      ]
    }
  });
};

webpack.conf.test.js

代码语言:javascript
复制
var path = require('path');
var webpack = require('webpack');
var vueLoaderConfig = require('./vue-loader.conf.js');
var eslintFormatter = require('eslint-friendly-formatter');
var HtmlWebpackPlugin = require('html-webpack-plugin');

function resolve(dir) {
  return path.join(__dirname, '..', dir);
}

module.exports = {
  devtool: '#inline-source-map',
  output: {
    path: path.resolve(__dirname, '../dist/js'),
    filename: 'build.js',
    publicPath: '/ntx/js/'
  },
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      '@': resolve('src')
    }
  },
  resolveLoader: {
    alias: {
      'scss-loader': 'sass-loader'
    }
  },
  plugins: [
    new webpack.DefinePlugin({
      'process.env': { NODE_ENV: '"testing"' }
    })
  ],
  // use inline sourcemap for karma-sourcemap-loader
  module: {
    rules: [
      { test: /\.css$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }] },
      { test: /\.postcss$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }] },
      { test: /\.less$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }, { loader: 'less-loader', options: { sourceMap: false } }] },
      { test: /\.sass$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }, { loader: 'sass-loader', options: { sourceMap: false, indentedSyntax: true } }] },
      { test: /\.scss$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }, { loader: 'scss-loader', options: { sourceMap: false } }] },
      { test: /\.stylus$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }, { loader: 'stylus-loader', options: { sourceMap: false } }] },
      { test: /\.styl$/, use: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, sourceMap: false } }, { loader: 'stylus-loader', options: { sourceMap: false } }] },
      { test: /\.(js|vue)$/,
        loader: 'eslint-loader',
        enforce: 'pre',
        include: [resolve('src'), resolve('test')],
        options: {
          formatter: eslintFormatter
        }
      }, {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: {
          loaders: {
            css: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }],
            postcss: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }],
            less: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }, { loader: 'less-loader', options: { sourceMap: false } }],
            sass: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }, { loader: 'sass-loader', options: { sourceMap: false, indentedSyntax: true } }],
            scss: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }, { loader: 'scss-loader', options: { sourceMap: false } }],
            stylus: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }, { loader: 'stylus-loader', options: { sourceMap: false } }],
            styl: ['vue-style-loader', { loader: 'css-loader', options: { minimize: false, souremap: false } }, { loader: 'stylus-loader', options: { sourceMap: false } }],
          },
          transformToRequire: {
            video: 'src',
            source: 'src',
            img: 'src',
            image: 'xlink:href'
          }
        }
      }, {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [resolve('src'), resolve('test')]
      }, {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: path.posix.join('./dist/img', 'img/[name].[hash:7].[ext]')
        }
      }
    ]
  }
};

有办法做我想要做的事吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-09 15:00:07

检查一下Karma配置选项

您可以使用--no-single-run而不是--single-run监视模式中运行测试。您也应该能够使用--auto-watch运行这一功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45593809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档