日更挑战-发布Typescript项目到npmjs
越不懂的越爱装
大家都同等:IT世界没有难不难,只有是否了解过
挑战目录
昨天看的多模块打包的时候发现这个部分的功能写的耦合性太高,不利于新项目的的使用。本来是打算重写一下的。不知怎么的,突然想写成npmjs库。由于大部分空闲时间都写这个去了。今天就随便写一下Typescript发布到npmjs的吧。
什么是Npmjs
是一个发布js或ts模块库的平台。发布上去的模块库可以通过平时开发的包管理工具npm,通过命令 npm install xxx 命令获取使用。
类似iOS使用的Cocoapods,JAVA和Android使用的maven
如何发布到Npmjs
- 注册npmjs账号 npmjs官网
- 创建一个npm项目
1. 创建一个空的文件夹,在命令行进入到该文件夹路径下
2. 创建npm项目
1.快速创建法:npm init -y
2.自定义创建的信息:npm init
name:发布的包名,默认是上级文件夹名。不得与现在npm中的包名重复。包名不能有大写字母/空格/下滑线!
version:你这个包的版本,默认是1.0.0。对于npm包的版本号有着一系列的规则,模块的版本号采用X.Y.Z的格式,具体体现为:
1、修复bug,小改动,增加z。
2、增加新特性,可向后兼容,增加y
3、有很大的改动,无法向下兼容,增加x
description:项目简介
mian:入口文件,默认是Index.js,可以修改成自己的文件
scripts:包含各种脚本执行命令
test:测试命令。
author:写自己的账号名
license:这个直接回车,开源文件协议吧,也可以是MIT,看需要吧。
任何一种方法创建出来的格式都类似如下:
{
"name": "more-moudle",
"version": "1.0.0",
"description": "",
"main": "dist/index.js", //之后添加的::指定导入使用时入口文件
"types": "dist/index.d.ts", //之后添加的::指定导入使用时入口文件d.ts
"scripts": {
"build": "npx tsc -p ." //之后添加的::编译ts文件
},
"keywords": [],
"author": "",
"license": "ISC",
"files": [ //之后添加的::指定发布到npmjs的文件夹。由于写的是TypeScript库。为了防止发布所以文件,所以需要添加
"/dist"
]
}
- 第一次发布时
在命令行输入npm adduser,提示输入注册的账号,密码和邮箱 - 非第一次发布包(可以省略,除非提示需要登录)
在终端输入npm login,然后输入你注册的账号和密码,和邮箱 - 发包
在命令行输入npm publish
PS:类似于gie的.gitignore文件可以列举不推送的文件。npmjs也有.npmignore可以列举不不发布文件
如何撤销发布的包
由于过一次撤销发布包导致很多引用的项目出现问题,npmjs现不支持撤销发布的一天以内的包。
删除npm市场的包同名的24小时后才能重新发布。
终端执行 npm unpublish
例如:
1、npm unpublish z-tool@1.0.0 删除某个版本
2、npm unpublish z-tool --force 删除整个npm市场的包
支持Typescript
-
在命令行输入 npx tsc --init 将会生成tsconfig.json配置文件
-
修改package.json。
-
"main":"dist/index.js" //指定使用该库时,使用该库的名字默认导入的文件
-
"types":"dist/index.d.ts" //指定使用该库时,使用该库的名字默认导入的Ts使用的d.ts文件
-
"scripts":{
"build":"npx tsc -p ." //添加ts编译命令,会自动找tsconfig.json配置文件编译输出
}
-
-
添加tsconfig.json配置。(tsconfig.json中会存在对应的注释掉的配置及相应解释,更多配置可以看相应解释)
源码文件夹-> "rootDir": "./src",
编译输出文件夹-> "outDir": "./dist",