是否可以从 node_module 转译本地模块?

Is it possible to transpile local modules from node_module?

我有 2 个打字稿项目,其中包含很少 类。我在 package.json

的 Project2 中添加了 Project1 的依赖项
{
  "name": "Project2",
  "dependencies": {
    "@Project1": "file:../Project1/dist"
  }
}

两个项目都是使用

构建的

"target": "es5", "module": "es2015",

我正在使用 Karma-Webpack for setting up test environment for the projects. To transpile the code I have used babel-loader(预设:es2015)而不是 ts-loader。它转译来自 Project2 的代码,但来自位于 node_modules 的 Project1 的代码未被转译。因此,当测试为 运行

时,它会抛出以下错误

Chrome 55.0.2883 (Windows 10 0.0.0) ERROR Uncaught SyntaxError: Unexpected token export at spec.bundle.js:80972

我想知道是否可以使用 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 代码