【问题标题】:webpack dllplugin how to use with karma?webpack dllplugin如何与业力一起使用?
【发布时间】:2016-09-22 10:35:28
【问题描述】:

我正在尝试在我的业力测试中使用DLLReferencePlugin,但我不完全确定如何使用它。

我已将vendors.jsvendors-manifest.json 放入src/static/ 该 dll 是使用 libraryTarget=var 生成的,它适用于我的开发和生产 webpack 构建。我的开发/生产版本使用一个 html 文件,其脚本标记指向根路径中的“vendors.js”。开发/生产构建将静态文件夹中的所有文件复制到目标文件夹。因此脚本标签可以找到vendors.js

但是,我在运行测试时从 PhantomJS 收到错误消息:ReferenceError: Can't find variable: vendors。我想知道它是否找不到vendors.js 脚本标签?

如果vendors.js 来自 DLL 插件,我该如何在我的 karma 配置中使用它??

我是 karma 的新手,因此非常感谢任何指导。

我尝试了很多没有结果的事情,包括将require('vendors.js') 放入我的测试条目文件中,将供应商的外部设置为真实,使用解析别名,但由于我对业力知之甚少,感觉就像我我几乎在黑暗中拍摄。因此,任何帮助将不胜感激。

我的业力配置如下。这来自我正在使用的starter kit。我的测试文件也与该入门套件相同。如果您需要任何其他信息来提供帮助,请告诉我。谢谢!

const karmaConfig = {
  basePath : '../', // project root in relation to bin/karma.js
  files    : [
    {
      pattern  : `./test-bundler.js`,
      watched  : false,
      served   : true,
      included : true
    }
  ],
  singleRun     : !argv.watch,
  frameworks    : ['mocha'],
  reporters     : ['mocha'],
  preprocessors : {
    [`/test-bundler.js`] : ['webpack']
  },
  browsers : ['PhantomJS'],
  webpack  : {
    devtool : 'cheap-module-source-map',
    resolve : Object.assign({}, webpackConfig.resolve, {
      alias : Object.assign({}, webpackConfig.resolve.alias, {
        sinon : 'sinon/pkg/sinon.js'
      })
    }),
    plugins : webpackConfig.plugins,
    module  : {
      noParse : [
        /\/sinon\.js/
      ],
      loaders : webpackConfig.module.loaders.concat([
        {
          test   : /sinon(\\|\/)pkg(\\|\/)sinon\.js/,
          loader : 'imports?define=>false,require=>false'
        }
      ])
    },
    // Enzyme fix, see:
    // https://github.com/airbnb/enzyme/issues/47
    externals : Object.assign({}, webpackConfig.externals, {
      'react/addons'                   : true,
      'react/lib/ExecutionEnvironment' : true,
      'react/lib/ReactContext'         : 'window'
    })
  },
  webpackMiddleware : {
    noInfo : true
  },
  coverageReporter : {
    reporters : config.coverage_reporters
  }
}

if (config.globals.__COVERAGE__) {
  karmaConfig.reporters.push('coverage')
  karmaConfig.webpack.module.preLoaders = [{
    test    : /\.(js|jsx)$/,
    include : new RegExp(config.dir_client),
    loader  : 'babel',
    query   : Object.assign({}, config.compiler_babel, {
      plugins : (config.compiler_babel.plugins || []).concat('istanbul')
    })
  }]
}

【问题讨论】:

    标签: phantomjs webpack karma-runner karma-mocha


    【解决方案1】:

    回答我自己的问题.. 天哪,有时只需要阅读一些文档...

    我把它放在我的业力配置的文件条目中:

    files: [{
      pattern : `./src/static/vendors.js/`,
      watched : false,
      served  : true
    },
    ...]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 2016-11-23
      • 1970-01-01
      • 2023-03-28
      • 2018-01-22
      • 2017-03-27
      相关资源
      最近更新 更多