从零使用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 相关文章推荐
通用javascript脚本函数库 方便开发
Oct 13 Javascript
javascript针对DOM的应用实例(一)
Apr 15 Javascript
给ListBox添加双击事件示例代码
Dec 02 Javascript
微信分享的标题、缩略图、连接及描述设置方法
Oct 14 Javascript
用js判断是否为360浏览器的实现代码
Jan 15 Javascript
Javascript基础教程之函数对象和属性
Jan 18 Javascript
angularJS提交表单(form)
Feb 09 Javascript
用JavaScript实现页面重定向功能的教程
Jun 04 Javascript
Web打印解决方案之普通报表打印功能
Aug 29 Javascript
Bootstrap模态框插件使用详解
May 11 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
Dec 29 Javascript
谈一谈vue请求数据放在created好还是mounted里好
Jul 27 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对象的串行化与反串行化
2016/01/24 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
javascript hashtable 修正版 下载
2010/12/30 Javascript
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Python登录系统界面实现详解
2019/06/25 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
Python进程池Pool应用实例分析
2019/11/27 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Python必须了解的35个关键词
2020/07/16 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
Flask处理Web表单的实现方法
2021/01/31 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
酒店员工职业生涯规划
2014/02/25 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
小组口号霸气押韵
2015/12/24 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
MySQL 如何分析查询性能
2021/05/12 MySQL