首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用来自TypeScript的TypeScript库

使用来自TypeScript的TypeScript库
EN

Stack Overflow用户
提问于 2017-12-11 21:28:07
回答 2查看 398关注 0票数 0

我正在尝试创建一个简单的TypeScript库,并从不同的TypeScript示例项目中测试它,这样我就可以验证并显示该库在不同的模块格式(包括TypeScript )下是可用的。

对于库,我将它编译成UMD代码,并将它与声明文件一起输出到一个"build“目录中,稍后我将从package.json文件中引用该目录。就像这样:

tsconfig.json

代码语言:javascript
复制
{
    "compilerOptions": {
        "module": "umd",
        "outDir": "build",
        "declaration": true,
        ...
    },
    ...
}

package.json

代码语言:javascript
复制
{
    "main": "build/index.js",
    "types": "build/index.d.ts",
    ...
}

值得一提的是,库是多个文件的组合,而index.js只是将它的不同部分粘合在一起,通过一个入口点公开它们。

现在,从其中一个示例项目中,我的目标是编译成AMD代码,并使用RequireJS来理解结果。我能够编写TypeScript代码,编译器对所有导入都很满意,编辑器(VS代码)提供了正确的自动完成功能。但是,编译后的代码不包括上述库的代码,这是它的依赖项之一。在浏览器中运行代码时,RequireJS无法加载库。以下是如何配置此项目:

tsconfig.json

代码语言:javascript
复制
{
    "compilerOptions": {
        "module": "amd",
        "outFile": "build/app.js"
    },
    ...
}

index.html

代码语言:javascript
复制
...
    <script src="node_modules/requirejs/require.js"></script>
    <script src="build/app.js"></script>
    <script>
        require(['main'])
    </script>
...

这样,RequireJS就会尝试从"/ library -name.js“加载库,而这个库当然不存在。

我不知道该怎么做。

EN

回答 2

Stack Overflow用户

发布于 2017-12-12 11:30:45

您需要提供一个RequireJS配置,以便RequireJS可以找到您的库。或者,您需要将库移动到默认情况下RequireJS查找它的位置。两者都是可能的选择。

例如,如果您的开发服务器恰好为您的示例项目提供node_modules服务,其中大概已经安装了library-name,那么您可以使用如下配置:

代码语言:javascript
复制
require.config({
  paths: {
    "library-name": "/node_modules/library-name/build/index",
  },
});

我假设node_modules是从您的开发服务器建立的站点的根部提供的。路径中缺少.js扩展并不是一个错误:您没有将.js放在那里,因为RequireJS添加了它。

票数 2
EN

Stack Overflow用户

发布于 2017-12-15 20:10:01

我想我得到了它,在另一个帮助下,除了其他的问题:RequireJS relative paths

因此,从本质上说,我必须以这样的方式配置RequireJS:

代码语言:javascript
复制
require.config({
    packages: [{
        name: 'module-name',
        location: 'node_modules/module-directory/build',
        main: 'index'
    }]
})

否则,如果我只包含索引文件的路径,则索引使用的所有相对路径都会相对于根解析,这是相当愚蠢的,但可以……

令我惊讶的是,baseUrl (2.6.2)编译器的paths和TypeScript选项没有帮助,实际上编译后的代码与这些字段是否被填充完全相同(我试图为它们使用RequireJS中帮助加载索引文件的相同值)。

编辑

如果有人感兴趣,下面是我在使用SystemJS时所需的配置:

代码语言:javascript
复制
SystemJS.config({
    paths: {
        'module-name': 'node_modules/module-directory/build/index'
    },
    packages: {
        '': {
            defaultExtension: 'js'
        }
    }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47761709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档