时间:2021-05-18
文章读译自The 30 second guide to publishing a typescript package to npm,部分内容有修改哈。
这篇文章要求你有一定的 JS 、TS 和 NPM 的知识,如果你写过普通的 NPM 包就更好啦~如果没有的话网上也很多教程的,都很简单~
发布过 npm 包的同学都知道,初始化一个 npm 项目,直接用 npm init -y 就可以了,那如果要用 ts 呢,直接 tsc --init 即可。这两个操作会生成 package.json 和 tsconfig.json 文件。然后我们按以下步骤修改一下配置:
1. 添加 "declaration": true 到你的 tsconfig.json
这行语句告诉 TypsScript 在编译的时候为你自动生成 d.ts 文件。需要注意的是,当你使用私有的类型时,但是这个类型也外部 API 的一部分,这个包的使用者就得不到该类型的类型推断,TS 编译器也会报警告,这时你只需要在该类型前添加 export 即可。
2. 添加 "types": "index.d.ts" 到你的 package.json
当其他人导入你的包的时候,这句话就告诉了 TS 编译器到哪里去寻找类型定义文件。这里的 .d.ts 文件和 main 入口指向的是一个文件夹,所以通常情况下,你的 package.json 会包含下面两行:
"main": "dist/index.js","types": "dist/index.d.ts"(上面默认你在 tsconfig.json 中配置的 outDir 指向的是 dist 目录)
3. 保证你的 dist 目录被添加到了 .gitignore
在我们的代码仓库,一般不需要包含编译后的代码,只需要包含源码即可。所以我们不对 dist 目录做版本管理。并且这也不影响我们发布 dist 目录到 npm。
4. 运行构建命令
运行 tsc 即可编译所有的源码。这非常方便,通常情况下,我们可以添加一条命令到 package.json:
"build": "tsc"5. 运行 npm publish
接下来就是要发布到 npm 了,在 package.json 添加以下命令:
"release": "tsc && npm publish"笔者习惯使用 standard-version 配合 commitizen 来发布 npm 包,感兴趣的同学可以自行了解一下~
如果想要在发布前调试本地包,可以使用 npm link 命令,在此项目根目录执行npm link, 然后在要调试的 demo 项目中执行 npm link <your package name>,然后在代码中直接引入使用即可。
下面是完成配置后的 package.json:
{ "name": "my-ts-lib", "version": "1.0.0", "description": "My npm package written in TS", "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { "build": "tsc", "release": "tsc && npm publish" }, "author": "savokiss", "license": "MIT", "devDependencies": { "typescript": "^3.5.3" }}下面是最终的 tsconfig.json:
{ "compilerOptions": { "target": "es5", "module": "commonjs", "lib": ["es2017", "es7", "es6", "dom"], "declaration": true, "outDir": "dist", "strict": true, "esModuleInterop": true }, "exclude": ["node_modules", "dist"]}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
NestJS最早在2017.1月立项,2017.5发布第一个正式版本,它是一个基于Express,使用TypeScript开发的后端框架。设计之初,主要用来解决
本文介绍了使用typescript开发angular模块并发布npm包,分享给大家,具体如下:创建模块初始化package.json文件执行命名npminit-
Vue2.5LevelE发布了:新功能特性一览近日,Vuev2.5发布,除了对TypeScript的更好的支持外,还有一些功能和语法的调整,你需要了解。本文,不
魅族MX4发布会直播:距离14:30的魅族MX4发布会直播开场只有不到一个小时的时间了,目前,北京国家体育馆副馆已经准备就绪,就等着魅友和嘉宾们入场了。而就
npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准。有了npm,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安