网站首页 > 开源技术 正文
有时候希望把某一个模块实现称为一个库,但是暂时又不希望把这个库放在另外一个仓库里面。这个时候就可以使用workspace的功能。
首先我们新建一个Node.js项目:
安装一下TypeScript编译器
npm install –save-dev typescript
package.json
{
"name": "ts-workspace",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"typescript": "^4.7.2"
}
}
然后初始化一下TypeScript配置。
npx tsc --init
这个时候会自动创建tsconfig.json
这是我们的主项目,接着我们要建立workspace项目。
npm init --workspace ./my-lib
这里先一路用默认值。
然后就跳入./my-lib目录,安装TypeScript编译器和初始化TypeScript配置,方法和前面一样。
完整后的目录结构如下:
接着我们在my-lib目录下面建一个index.ts,用于创建一个TypeScript接口。
export interface MyConfig {
getName: () => string;
}
在./my-lib的package.json里面添加build脚本:
运行npm run build,就可以产生对应的index.js文件了。
TypeScript除了要产生js文件,还需要产生一个index.d.ts声明文件。
修改tsconfig.json,然后去掉”declaration”配置的注释。
再运行npm run build,就可以看到index.d.ts文件也生成了。
接着还要在my-lib文件夹里面的package.json,添加”types”字段,用于告诉TypeScript,类型声明文件是刚才生成的index.d.ts。
这样my-lib这个库就做完了。
但是要在主仓库里面使用,还需要回到主仓库,运行npm install
他会自动在主目录的node_modules目录下面建立一个my-lib的symbol link。
这样主程序就能使用my-lib这个库了。
写一小段程序使用一下my-lib暴露的那个interface。
import { MyConfig } from "my-lib";
class MyClass implements MyConfig {
getName = () => {
return "ABC";
}
}
const m = new MyClass();
console.log(m.getName());
引用都没有问题。
把模块临时放在workspace里面,可以使代码更模块化,同时也为模块稳定之后,移入一个正式的单独仓库做准备。
猜你喜欢
- 2025-04-30 Mac 下php5.3-7.0的二进制包 ── PHP-OS
- 2025-04-30 如何把一个Python应用程序装进Docker
- 2025-04-30 为何推荐 JsonTree.js 做 JSON 可视化?
- 2025-04-30 Python进阶-day21:复习与小项目(python小项目练手)
- 2025-04-30 java项目相关知识点整理(java项目简介)
- 2025-04-30 Deepseek官方提示词教程(deep message)
- 2025-04-30 里程碑!用自己的编程语言实现了一个网站
- 2025-04-30 草率了,又一个Maven打包的问题(maven打包带源码)
- 2025-04-30 JSONP安全攻防技术(web安全攻防)
- 2025-04-30 maven 处理多版本 jar包依赖冲突(maven管理jar包冲突)
你 发表评论:
欢迎- 最近发表
-
- 6月游戏推荐(二)(6月份新出的游戏)
- 37【源码】数据可视化:基于 Echarts + Python 动态实时大屏
- Kubernetes Kube-Proxy 组件 IPVS 模式工作原理及常用故障排查
- 《茶余饭后顶级英文歌曲精选》(茶余饭后的经典句子)
- rainx和MediaTek携手推出101产品生态,为5G FWA提供创新
- KAPITAL 推出蓝染风格 Aloha Shirt 系列
- 欧美经典怀旧歌曲Free loop-管不住的音符
- Mac 下php5.3-7.0的二进制包 ── PHP-OS
- 如何把一个Python应用程序装进Docker
- 为何推荐 JsonTree.js 做 JSON 可视化?
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)