转换webpack中的模块路径

时间:2017-05-02 03:05:52

标签: webpack karma-runner

我使用的是karma@1.5.0和webpack@1.8.4

我想将源文件拉入测试。此源文件具有外部依赖关系,但在测试期间未运行的其他环境中解析该外部依赖关系。

我要导入的文件中的外部依赖关系如下所示:

import MyModule from 'external!myFile';

在我的测试环境中,外部没有任何意义。 我基本上想要替换外部!myFile' 同 ' ../../富/酒吧/ myFileLocal'

我尝试了一些不同的东西,最简单的是npm包 "字符串替换"

我的webpack配置专门包含在我的业力配置中:

webpack: {
  module: {
    loaders: [
      { test: /\.js/, exclude: /node_modules/, loader: 'babel-loader' },
      {
        test: /srcFileName\.js$/,
        loader: 'string-replace-loader',
        query: {
          search: 'external!myFile',
          replace: '../../testlibs/myFile',
          strict: true
        }
      }
    ]
  },
  watch: true
},

当webpack编译源代码时,替换不会发生,我只是得到错误:

Module not found: Error: Cannot resolve module 'external' in (my abs path 
edited)\js\models
 @ ./js/models/myFile.js 9:31-67

我尝试了一些使用自定义加载程序的其他方法,但我仍然需要在“外部”之后映射文件路径!'

我遗漏了哪些明显的东西? 谢谢

更新:我已经从" myFile"编辑了测试属性正则表达式to" srcFileName"澄清一下,还是有同样的问题。

更新:我的正则表达式已关闭。文件名是srcFileName1。将测试更改为/srcFileName1\.js$/解决了我的问题。

1 个答案:

答案 0 :(得分:0)

替换external!myFile导入的规则不适用于您将其导入的文件,而是适用于实际的myFile.js。正则表达式应该与包含导入的文件匹配:

{
  test: /fileThatContainsImport\.js$/,
  loader: 'string-replace-loader',
  query: {
    search: 'external!myFile',
    replace: '../../testlibs/myFile',
    strict: true
  }
}