我已经使用了coffeescript一段时间了.现在我需要编写一个npm包,我可以用coffeescript编写它,还是我应该将coffeescript编译成javascript?
我想在Typescript中创建一个可以通过npm共享的库.具体来说,我想使用webpack生成一个js包以及一个定义文件,以与js共享类型.所以我有一个文件树,如:
??? lib
? ??? lib.d.ts
? ??? lib.min.js
??? test
...
??? ts
? ??? errors
? ? ??? CannotModifyAlteredObject.ts
? ??? Lib.ts
? ??? PostProcessors.ts
? ??? Serializers.ts
??? tsconfig.json
??? typings.json
??? LICENSE
??? package.json
??? README.md
??? webpack.lib.config.js
Run Code Online (Sandbox Code Playgroud)
导出的所有类型ts/Lib.ts都将导出到目录中的单个位置.d.ts,lib以便位于js包旁边.
我查看了以下问题/来源:
但是,这些都没有提供使用webpack的示例.能够将使用库所需的一切(除了nodejs运行时)捆绑到一个文件中对我的用例非常重要,因此webpack非常适合这个角色.我希望能够生成一个.d.ts映射到webpack创建的文件.但是,我想避免.d.ts手动创建文件 - 应该可以自动提取类型,而无需手动创建的.d.ts文件与我的源代码不同步.有办法做到这一点吗?
鉴于这2个打字稿文件
api/Token.ts
interface Token {
code: string
}
export default Token
Run Code Online (Sandbox Code Playgroud)
和 index.ts
export * from './api/Token'
Run Code Online (Sandbox Code Playgroud)
tsc 1.5与--declarations交换机将生成两个.d.ts文件(具有相似的内容)
api/Token.d.ts
interface Token {
code: string;
}
export default Token;
Run Code Online (Sandbox Code Playgroud)
和 index.d.ts
export * from './api/Token';
Run Code Online (Sandbox Code Playgroud)
使用以下选项运行grunt-dts-bundle
dts_bundle: {
release: {
options: {
name: 'my-module',
main: 'index.d.ts'
}
}
}
Run Code Online (Sandbox Code Playgroud)
将生成具有my-module.d.ts以下内容的环境模块声明文件
declare module 'my-module' {
export * from './api/Token';
}
Run Code Online (Sandbox Code Playgroud)
但是,由于以下原因,此声明无法编译: Import or export declaration in an ambient module declaration cannot reference module through …
我想用 TypeScript 编写一个 npm 模块。有人可以推荐我一份如何开始的最佳实践指南吗?
我的问题是:
Node.js 不支持开箱即用的 TypeScript,对吗?那么推荐的发布 npm 模块的方式是怎样的呢?创建 2 个文件夹 /ts /js 并在 package.json 中引用 js/index.js 作为入口点。或者使用某种运行时转译器并直接运行 TypeScript 文件?还是不建议在 npm 模块中发布任何 TypeScript 代码,然后将其编译为普通的 Javascript 并在 Git 存储库中提供 TypeScript 源代码?
打字支持的推荐方式是什么?我看到我可以在 package.json 中引用打字文件。他们可以在线吗,我应该向他们提供 npm 模块还是根本不发布 ts 和 dtd 文件?使用typings安装它们并提供typings.json?
如果我想为我的代码提供打字支持,推荐的方法是什么?即使我的模块非常小和简单(做一件事并做对),提供一些信息和自动完成支持也很有用。我还是 TypeScript 的新手,所以不确定最好的方法是什么。我猜想编写一个接口并将其与我的 npm 模块一起提供。这些文件应该稍后上传到绝对类型目录还是仅对较大的库有意义?
我很想知道如何使用当前的 TypeScript 和 Node 版本正确地做到这一点,因为我发现的很多信息都已经过时了,比如 autodts、tsd 等。
如果有人可以帮助我,我很高兴。一旦我知道这是如何以正确的方式完成的,我将制作文档并在 Github 上为其他人提供这些信息。
干杯
我正在用 Typescript 编写一个库包,将其发布到npm注册表,以便它可以被其他各种项目使用。
我已按照发布文档进行操作,以确保该--declaration选项正确,tsc以便类型定义也导出到*.d.ts文件中。
我的问题是,现在此类导出分散在各个文件夹中,我的包的消费者正在导入它们,如下所示。
import { FooType } from 'my-test-pacakge/dist/src/foo/types';
import { BarInterface } from 'my-test-package/dist/src/foo/bar';
Run Code Online (Sandbox Code Playgroud)
我想知道这是否可以接受,因为它看起来很乱。我应该编写自己的声明文件以更清晰的方式组织它们吗?
类似问题的现有答案建议通过通用 index.ts 文件导出 API。这对我来说听起来很合理,但我只是想知道dist直接从文件夹导入是否被认为是不好的做法?
npm ×4
typescript ×4
node.js ×3
coffeescript ×1
javascript ×1
module ×1
scripting ×1
webpack ×1