在typescript库捆绑包中未找到静态导出

在typescript库捆绑包中未找到静态导出,typescript,webpack,Typescript,Webpack,我在文件Style.ts中有一个类样式: export class Style { ... } 此类具有一些属性、一些方法和构造函数,以及其他类依赖项的几个导入语句。该类目前正通过标准es6导入语句被其他类使用: import { Style } from "../Theming/Style"; 如果我将此文件作为webpack的入口点,它会在捆绑包的末尾生成以下内容: /***/ 0: /*!*******************************************

我在文件Style.ts中有一个类样式:

export class Style
{
    ...
}
此类具有一些属性、一些方法和构造函数,以及其他类依赖项的几个导入语句。该类目前正通过标准es6导入语句被其他类使用:

import { Style } from "../Theming/Style";
如果我将此文件作为webpack的入口点,它会在捆绑包的末尾生成以下内容:

/***/ 0:  
/*!***************************************************************!*\
/* ./src/Forms/Theming/Style ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(/*! ./src/Forms/Theming/Style 
*/"./src/Forms/Theming/Style.ts");
并且样式类不会出现在包中。如果我不将此文件作为入口点,它将被完全忽略,即使它被作为入口点包含的另一个模块使用。另外,我给这个类作为一个例子,因为这是发生在几个文件,我目前不明白为什么

这是我的网页包配置文件:

module.exports = {
    watch: false,
    mode: "development",
    devtool: false,
    entry:
    {
        main: common.entryPoints
    },
    output:
    {
        path: __dirname + "/../dist",
        filename: "forms-library.js",
        library: "FormsLibrary",
        libraryTarget: "umd"
    },
    module:
    {
        rules:
        [
            { test: /\.ts$/, use: "ts-loader", exclude: "/node_modules/" }
        ]
    },
    resolve:
    {
        extensions: [ ".ts" ],
        modules: [ "./src" ]
    }
}
这是我的typescript配置:

{
    "exclude": ["node_modules","dist", "build"],
    "compilerOptions": 
     {
        "lib": [ "es2015", "dom" ],             
        "sourceMap": false,
        "target": "es5",
        "module": "es6"
     }
}

有人能告诉我为什么现在会这样吗?谢谢大家!

样式类仅由类型批注引用,因此在TypeScript编译器删除这些类型批注后,Webpack将正确地确定从运行时的入口点开始永远不会使用该类。如果向新样式添加实际调用。。。在某些地方,应该包括样式类。或者,如果它仅由库的客户端实例化,则需要从入口点重新导出它,以便客户端可以访问它。

我不确定是否已经解决了此问题,但我发现自己也遇到了同样的问题,经过大量挖掘,我通过将libraryTarget包含在Web包配置的输出属性中修复了它:

// ...
output: {
  path: root('./dist'),
  filename: 'index.js',
  libraryTarget: 'umd' // <-- this line
},
// ...

希望这有帮助

我尝试了这一点,当我将Style.ts列为入口点时,该类正确地包含在输出中。你能发布一个重现问题的存储库吗?嗨,Matt,当然,你可以在这里找到整个项目:配置文件中可能有差异,因为我一直在尝试修复问题啊,重新导出它修复了问题,谢谢Matt!我真的不明白为什么会发生这种情况,因为我使用import语句导入类,为什么不强制它导入模块?或者此Typescript正在尝试优化内容?Typescript将删除运行时未使用的导入。我想这是为了优化和/或避免来自后续工具的未使用导入的警告。我不知道确切原因,但我有一个react组件库从Typescript传输到Javascript,这解决了我的导入问题。非常感谢。