我有 2 个包含几个类的 typescript 项目。我在 package.json 中的 Project2 中添加了 Project1 的依赖项
{
"name": "Project2",
"dependencies": {
"@Project1": "file:../Project1/dist"
}
}
两个项目都是使用构建的我正在使用 Karma-Webpack 为项目设置测试环境。为了转译代码,我使用了 babel-loader(预设:es2015)而不是 ts-loader。它转译了来自 Project2 的代码,但来自位于 node_modules 中的 Project1 的代码没有被转译。由于它在运行测试时抛出以下错误
我想知道是否可以使用 webpack 从 node_modules 转译本地模块?
注意: 如果我将模块类型更改为“commonjs”,它可以工作,但这不是我正在寻找的解决方案。
有什么建议么???
最佳答案
好吧,因为我使用 es2015 来编译父模块,所以我遇到了这个错误。如果你使用 commonjs,你就不会遇到这个问题。
您可以通过在 karma.config.file 中的 webpack 配置中添加以下内容来编译节点模块代码。
webpack: {
resolve: {
extensions: ['', '.ts', '.js']
},
module: {
loaders: [
{
// This will transpile Typescript files
test: /\.ts(x?)$/,
exclude: /node_modules/,
loader: "babel-loader" + "?presets[]=es2015" + "!ts-loader",
},
{
// This will transpile ES2015 javascript files
test: /\.js(x?)$/,
include: [
path.resolve(__dirname, "node_modules/<<YOUR MODULE NAME>>")
],
loader: "babel-loader" + "?presets[]=es2015"
}
]
}
},
现在,Webpack 将使用 babel-loader 转译 JS/TS 代码。
关于typescript - 是否可以从 node_module 转译本地模块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41838046/