在 webpack 中转换模块路径
transform module path in webpack
我正在使用 karma@1.5.0 和 webpack@1.8.4
我想拉入源文件进行测试。此源文件具有外部依赖性,但在测试期间在不是 运行 的不同环境中解决。
我要导入的文件中的外部依赖如下所示:
import MyModule from 'external!myFile';
在我的测试环境中,外部没有任何意义。
我基本上想替换 'external!myFile'
和
'../../foo/bar/myFileLocal'
我尝试了几种不同的方法,最简单的是 npm 包
"string-replace"
我的 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
我尝试了一些使用自定义加载器的其他方法,但我仍然需要在 'external!'
之后映射文件路径
有什么明显的我遗漏的吗?
谢谢
更新:我已经将测试 属性 正则表达式从 "myFile" 编辑为 "srcFileName" 以澄清,仍然有同样的问题。
更新:我的正则表达式已关闭。文件名为 srcFileName1。将测试更改为 /srcFileName1\.js$/
解决了我的问题。
替换 external!myFile
导入的规则不适用于您要导入它的文件,但适用于实际的 myFile.js
。正则表达式应匹配包含导入的文件:
{
test: /fileThatContainsImport\.js$/,
loader: 'string-replace-loader',
query: {
search: 'external!myFile',
replace: '../../testlibs/myFile',
strict: true
}
}
我正在使用 karma@1.5.0 和 webpack@1.8.4
我想拉入源文件进行测试。此源文件具有外部依赖性,但在测试期间在不是 运行 的不同环境中解决。
我要导入的文件中的外部依赖如下所示:
import MyModule from 'external!myFile';
在我的测试环境中,外部没有任何意义。 我基本上想替换 'external!myFile' 和 '../../foo/bar/myFileLocal'
我尝试了几种不同的方法,最简单的是 npm 包 "string-replace"
我的 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
我尝试了一些使用自定义加载器的其他方法,但我仍然需要在 'external!'
之后映射文件路径有什么明显的我遗漏的吗? 谢谢
更新:我已经将测试 属性 正则表达式从 "myFile" 编辑为 "srcFileName" 以澄清,仍然有同样的问题。
更新:我的正则表达式已关闭。文件名为 srcFileName1。将测试更改为 /srcFileName1\.js$/
解决了我的问题。
替换 external!myFile
导入的规则不适用于您要导入它的文件,但适用于实际的 myFile.js
。正则表达式应匹配包含导入的文件:
{
test: /fileThatContainsImport\.js$/,
loader: 'string-replace-loader',
query: {
search: 'external!myFile',
replace: '../../testlibs/myFile',
strict: true
}
}