首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webpack dllplugin如何使用与因果报应?

webpack dllplugin如何使用与因果报应?
EN

Stack Overflow用户
提问于 2016-09-22 18:35:29
回答 1查看 676关注 0票数 3

我正在尝试在我的karma测试中使用DLLReferencePlugin,但我不完全确定如何让它工作。

我已经将vendors.jsvendors-manifest.json放在了src/static/中,这个动态链接库是用libraryTarget=var生成的,它在我的开发和生产环境中都能正常工作,由webpack构建。我的开发/生产构建使用一个html文件,该文件带有一个脚本标记,指向根路径下的"vendors.js“。dev / production构建将静态文件夹中的所有文件复制到目标文件夹。因此,脚本标记可以找到vendors.js

然而,在运行我的测试时,我从PhantomJS:ReferenceError: Can't find variable: vendors得到了一个错误。我想知道它是否找不到vendors.js脚本标记?

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

我刚接触karma,所以任何指导都将非常感谢。

我尝试了许多没有结果的事情,包括将require('vendors.js')放入我的测试条目文件中,将供应商的外部变量设置为真,使用解析别名,但由于我对因果报应知之甚少,所以我感觉自己几乎是在摸索。因此,我们将非常感谢您的帮助。

我的业力配置如下。这来自于我正在使用的starter kit。我的测试文件也与初学者工具包中的相同。如果您需要任何其他信息,请让我知道。谢谢!

代码语言:javascript
复制
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')
    })
  }]
}
EN

回答 1

Stack Overflow用户

发布于 2016-09-22 18:44:36

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

我在我的karma配置的files条目中添加了以下内容:

代码语言:javascript
复制
files: [{
  pattern : `./src/static/vendors.js/`,
  watched : false,
  served  : true
},
...]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39636727

复制
相关文章

相似问题

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