typescript 项目怎样编译打包发布到 npm, 并且能够让其他项目通过 javascript 和 typescript 使用。
为此写了两个测试项目:
- MarshalW/fake-ts-service ,发布到 npm 的包
- MarshalW/fake-ts-service-client,使用 face-ts-service 的 js/ts 程序
实现 MarshalW/fake-ts-service 需要注意的点:
tsconfig.json
- 可通过命令生成
tsc --init
"compilerOptions"
属性下:"module": "ESNext"
,默认是commonjs
"declaration": true,
,默认是屏蔽的"declarationMap": true,
, 默认是屏蔽的"moduleResolution": "node"
, 否则 tsc 编译会无法解析包"outDir": "./lib"
,设置构建输出路径
"include": ["src"]
"exclude": ["node_modules", "**/__tests__/*"]
- 可通过命令生成
package.json
"main": "lib/index.js",
"types": "lib/index.d.ts",
,为了 typescript 应用引用这个包时的类型定义"files": [ ..
,设置打包文件的白名单,这样不会再输出 src
执行:
npm run build
,编译生成 javascript,在 lib 目录下npm test
,执行测试,验证本地导入和执行模块npm version patch
,在确保 git 提交后,设置小版本更新npm publish
,发布当前更新的 npm 包
实现 MarshalW/fake-ts-service-client 需要注意的点:
tsconfig.json
"compilerOptions"
"module": "ESNext"
,"moduleResolution": "node"
, 否则 tsc 编译会无法解析包"outDir": "./dist"
package.json
"main": "dist/index.js",
"type": "module",
执行:
npm i
,node test.js
, 测试 js 代码直接访问 fake-ts-servicenpm run build
npm start
, 测试 ts 代码访问 fake-ts-service