从零使用TypeScript开发项目打包发布到npm


Posted in Javascript onFebruary 14, 2020

前言

typescript作为未来前端开发的主流框架,在前端开发的过程中也会越来越主要,相信这篇文章会对你有很大的帮助!

开发环境搭建

创建ming-npm-package文件夹

我在桌面上创建了一个ming-npm-package的文件夹,然后在编辑器里面打开

初始化项目

npm init

通过npm init 初始化项目来创建用户package.json文件

也可以npm init -y 这个是使用的默认的配置,我个人使用的是npm init

设置配置项

package name: (ming-npm-package)
version: (1.0.0)
description: use ts
//这下边的entry point: 这个是指定的最后使用的文件,而不是编译文件
entry point: (index.js) ./dist/ming-npm-package.js
test command:
git repository:
keywords: typescript
author: xiaoming
license: (ISC) MIT
About to write to C:\Users\明\Desktop\ming-npm-package\package.json:

{
 "name": "ming-npm-package",
 "version": "1.0.0",
 "description": "use ts",
 "main": "./dist/ming-npm-package.js",
 "scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
 },
 "keywords": [
  "typescript"
 ],
 "author": "xiaoming",
 "license": "MIT"
}


Is this OK? (yes)

这就是我设置的配置项,没问题就可以输入yes然后回车了

从零使用TypeScript开发项目打包发布到npm

创建tsconfig.json文件

tsc --init

就会生成一个tsconfig.json文件

修改tsconfig.json默认文件

把这两个注释打开

"declaration": true, //打包之后是否生成声明文件

"outDir": "./dist", //输出文件

添加exclude,忽略dist文件

在打包的时候会排除这里面指定的路径文件

"exclude": [
  "./dist"
 ]

安装依赖

npm install typescript -D

开始编码

创建ming-npm-package.ts文件

用来编写功能

const arrayMap = (array: [], callback:(item: any,index: number, arr: any[]) => any): any => {
  let i = -1
  const len = array.length
  let resArray = []
  while (++i < len){
    resArray.push(callback(array[i],i,array))
  }
  return resArray
}
export = arrayMap

对代码进行编译

tsc

此时我们的项目就会多了一个dist目录

从零使用TypeScript开发项目打包发布到npm

登录npm

大家没有npm账号的可以注册一个

这个是网址

https://www.npmjs.com

然后在编辑器终端里面输入

npm login

接着就会出来用户名、密码、邮箱这些依次填一下

从零使用TypeScript开发项目打包发布到npm

创建.npmignore文件

在项目根目录里创建一个.npmjgnore

这个其实和.gitignor差不多,就是你发npm包的时候,希望哪些文件或者文件夹不发到这个npm上

这里不用写的node_modules,这是默认忽略的

从零使用TypeScript开发项目打包发布到npm

版本号

在package.json里面版本号,
每发布一次都要修改一下

从零使用TypeScript开发项目打包发布到npm

发布

npm publish

发布成功

从零使用TypeScript开发项目打包发布到npm

安装使用

我们把package.json文件里面的name改成:
ming-npm

从零使用TypeScript开发项目打包发布到npm

目的是 我们要安装的包不能和package.json里面的包名字是一样的

然后再安装一下我们这个包:

npm install ming-npm-package@1.0.1

跟其他的包一样 npm install 包名

安装成功:

从零使用TypeScript开发项目打包发布到npm

再次发布

如果需要再次发布一定要改个版本号,改成之前的名字

然后再tsc对代码进行编译

npm publish 进行发布

源码

这个是我的代码

https://github.com/shifengming/ming-npm-package

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
Sep 19 Javascript
一个报数游戏js版(约瑟夫环问题)
Aug 05 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
Jan 29 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
May 07 Javascript
VUE长按事件需求详解
Oct 18 Javascript
vue仿淘宝订单状态的tab切换效果
Jun 23 Javascript
浅谈Node模块系统及其模式
Nov 17 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
Dec 06 Javascript
简单理解Vue中的nextTick方法
Jan 30 Javascript
使用pm2部署node生产环境的方法步骤
Mar 09 Javascript
vue实现拖拽的简单案例 不超出可视区域
Jul 25 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
Oct 26 Javascript
JavaScript中的this原理及6种常见使用场景详解
Feb 14 #Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
Feb 14 #Javascript
Angular之jwt令牌身份验证的实现
Feb 14 #Javascript
node.js中module模块的功能理解与用法实例分析
Feb 14 #Javascript
JS实现简易计算器
Feb 14 #Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
Feb 14 #Javascript
node.js中npm包管理工具用法分析
Feb 14 #Javascript
You might like
数据库查询记录php 多行多列显示
2009/08/15 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
js的with语句使用方法
2007/09/21 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
js中this对象用法分析
2018/01/05 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
Python性能提升之延迟初始化
2016/12/04 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
Python 多进程原理及实现
2020/12/21 Python
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
测绘工程个人的自我评价
2013/11/23 职场文书
教师业务学习制度
2014/01/25 职场文书
学生周末长期请假条
2014/02/15 职场文书
个人承诺书
2014/03/26 职场文书
英语教研活动总结
2014/07/02 职场文书
篮球比赛通讯稿
2015/07/18 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python