在打字稿库包中找不到静态导出

时间:2018-09-09 20:10:32

标签: typescript webpack

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

export class Style
{
    ...
}

此类具有一些属性,一些方法和构造函数,以及一些用于其他类依赖项的导入语句。该类当前正在通过标准的es6 import语句被其他类使用:

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");

并且Style类没有出现在捆绑软件中。如果我不将此文件作为入口点,即使它被作为入口点包含的另一个模块使用,它也会被完全忽略。另外,我以一个类为例,因为这发生在多个文件中,我目前不知道为什么。

这是我的webpack配置文件:

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" ]
    }
}

这是我的打字稿配置:

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

谁能告诉我为什么现在这样?谢谢!

2 个答案:

答案 0 :(得分:1)

Style类仅由类型注释引用,因此在TypeScript编译器除去这些类型注释之后,Webpack正确地确定从运行时从您的入口点开始就永远不会使用该类。如果您在某个地方向new Style(...)添加了一个实际的调用,则应该包括Style类。或者,如果仅打算由库的客户端实例化该实例,则需要从入口点重新导出它,以便客户端可以访问它。

答案 1 :(得分:1)

我不确定这个问题是否已经解决,但是我发现自己也遇到了同样的问题,经过反复研究,我通过在libraryTarget的{ Webpack配置:

output

希望这会有所帮助!