如何在karma中使用webpack多入口?

3
我有一个Webpack配置文件,其中包含多个入口点:
entry: {
  'js/app': ['./css/app/style.scss', './js/app/index.js'],
  'js/vendor': ['./js/vendor/index.js', './css/vendor/index.css'],
  'js/snippets': './js/snippets/index.js'
},

我不想在karma配置中硬编码所有这些路径。 只需包含webpack配置并从那里连接所有条目即可:
var webpackConfig = require('./webpack.config');
...
...
files: webpackConfig.entry,

但是file选项希望有一个字符串数组。是否有现成的解决方案?不需要手动将对象转换为数组。

1个回答

3

我有一个类似的设置,这是对我有效的方法。在karma配置文件中,只需为测试配置文件即可。对于我来说,就像下面这样:

files: [
  './scripts/vendor/jquery.min.js',
  // any other global dependency
  './scripts/**/*.spec.js'
]

编辑

由于webpack的工作方式,您不需要在karma配置中添加项目文件。只要测试导入/需要测试主题文件,webpack将对其进行打包并运行测试。

结束编辑

然后,在预处理器部分:

preprocessors: {
  './scripts/**/*.spec.js': ['webpack']
},

最后,我已经导入了webpack配置:

const webpackConfig = require('./webpack.config.js');

我使用karma-webpack插件,如下所示添加了一个webpack部分:

webpack: {
  devtool: webpackConfig.devtool,
  resolve: webpackConfig.resolve,
  module: webpackConfig.module,
  externals: Object.assign({}, webpackConfig.externals, {
    chai: 'chai'
  })
},

你如何包含项目文件/构建文件? - Stepan Suvorov
我想象一下,在你的测试中,你会导入/需要项目文件,所以webpack会处理它。 - thitemple
我能否也请您展示一下您导入测试文件中的依赖项示例?因为之前在使用Karma进行测试时,我在karma配置中指定了所有项目文件。 - Stepan Suvorov
如果您有外部依赖项,可以将它们添加到文件配置中,例如我有一个全局依赖项jquery,因此我也会添加它。我将更新示例。但是,只需按正确顺序将依赖项添加到文件数组中即可。 - thitemple
期待您的更新。您的回答已经帮了很多忙!谢谢。 - Stepan Suvorov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接