簡體   English   中英

我如何獲得業力將webpack的模式設置為開發?

[英]How do I get karma to set webpack's mode to development?

當我經營業力時,我收到以下警告:

配置中的警告尚未設置'mode'選項,webpack將回退到此值的'production'。 將“mode”選項設置為“development”或“production”以啟用每個環境的默認值。 您還可以將其設置為“無”以禁用任何默認行為。 了解更多: https//webpack.js.org/concepts/mode/

我嘗試將mode: 'development'添加到我的webpack-test.config.js文件中,如上面的鏈接所示,但不僅沒有產生任何影響,Intellij IDEA抱怨:

webpack:不允許使用屬性“模式”

無論如何我的單元測試確實在運行,但我想擺脫這個警告。 任何幫助深表感謝。

這是我的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

我通過反復試驗偶然發現了這一點,取而代之的是:

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

...在karma.conf.js中:

webpack: {
  mode: 'development'
}

......警告消失了。 不僅如此,我發現我真的不需要我的webpack-test.config ,也沒有我需要加載的兩個npm模塊來支持它, source-map-loaderts-loader

如果有人真的想要同時指定mode: 'development'並指定一個特定的webpack配置文件,我不確定他們是怎么做的。 我嘗試了一些選項,找不到任何可行的方法。 這東西沒有很好的文檔:(

您不必在配置文件中要求webpack包。 不確定是否會導致Intellij混淆或混淆,但mode肯定是webpack的有效屬性。

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

我還注意到在你的karma.conf.js文件中,行webpack: require('./webpack-test.config')缺少配置文件的.js擴展名。 這可能就是為什么您的配置設置沒有反映在您的業力測試中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM