Как получить карму, чтобы настроить режим веб-пакета на разработку? - PullRequest
0 голосов
/ 17 мая 2018

Когда я запускаю karma, я получаю следующее предупреждение:

ПРЕДУПРЕЖДЕНИЕ в конфигурации. Параметр 'mode' не был установлен, webpack откатится до 'production' для этого значения.Установите для параметра «mode» значение «development» или «production», чтобы включить настройки по умолчанию для каждой среды.Вы также можете установить его в «none», чтобы отключить любое поведение по умолчанию.Узнать больше: https://webpack.js.org/concepts/mode/

Я пытался добавить mode: 'development' к моему webpack-test.config.js файлу, как предложено по ссылке выше, но не только это не имело никакого значения, Intellij IDEA жаловался:

webpack: свойство 'mode' не разрешено

Мой юнит-тест в любом случае запущен, но я бы хотел избавиться от этого предупреждения.Любая помощь очень ценится.

Вот мой webpack-test.config.js файл:

const path = require('path');
const webpack = require('webpack');

const ROOT = path.resolve( __dirname, 'src' );

module.exports = {
  mode: 'production',
  context: ROOT,

  resolve: {
    extensions: ['.ts', '.js'],
    modules: [
      ROOT,
      'node_modules'
    ]
  },

  module: {
    rules: [
      // PRE-LOADERS
      {
        enforce: 'pre',
        test: /\.js$/,
        use: 'source-map-loader'
      },

      // LOADERS
      {
        test: /\.ts$/,
        exclude: [ /node_modules/ ],
        use: 'ts-loader'
      }
    ]
  },

  devtool: 'cheap-module-source-map',
  devServer: {}
};

Мой karma.conf.js:

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage-istanbul-reporter'),
      require('karma-webpack')
    ],
    client:{
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    coverageIstanbulReporter: {
      reports: [ 'html', 'lcovonly' ],
      fixWebpackSourcePaths: true
    },
    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false,
    files: [
      'spec.bundle.js'
    ],
    preprocessors: {
      'spec.bundle.js': ['webpack']
    },
    webpack: require('./webpack-test.config')
  });
};

И spec.bundle.js:

const testsContext = require.context("./", true, /\.spec\.ts$/);
testsContext.keys().forEach(testsContext);

Я запускаю карму через:

karma start ./karma.conf.js

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Вам не нужно запрашивать пакет webpack в вашем конфигурационном файле.Не уверен, что это вызывает путаницу в Intellij или нет, но mode, безусловно, является допустимым свойством webpack.

https://webpack.js.org/concepts/mode/

Я также заметил, что в вашем файле karma.conf.jsв строке webpack: require('./webpack-test.config') отсутствует расширение .js для файла конфигурации.Возможно, поэтому настройки вашего конфига не отражены в вашем тесте кармы.

0 голосов
/ 17 мая 2018

Я наткнулся на это методом проб и ошибок, заменив:

webpack: require('./webpack-test.config')

... в karma.conf.js на:

webpack: {
  mode: 'development'
}

... и предупреждение исчезло.Мало того, я обнаружил, что мне действительно не нужны ни мой webpack-test.config, ни два npm-модуля, которые я загружал для его поддержки, source-map-loader и ts-loader.

Если кто-то действительно хочетчтобы указать mode: 'development' и указать конкретный файл конфигурации веб-пакета, я не уверен, как они это сделают.Я экспериментировал с несколькими вариантами и не мог найти ничего, что могло бы работать.У этого материала нет отличной документации: (

...