其实刚刚从传统前端+后端转到现在主流的node,前后端分离,vue三个月不到的我,其实还没有想过自己会写包上传到npm给大家使用……契机来源于,我下载了一个别人写好的基于vue实现的tree grid包,但是我需要修改一些样式,但是下载下来的在node_modules的源码直接改是没有用的,参考了网上的一些文章,总结一下如果出现这种需求的话怎么处理~
1. 在npm官网,包的介绍文档一般都会附上项目的Github地址,去GitHub上clone/download到本地修改;
2. 在本地修改完成,npm run dev测试通过后,npm run build生成目标文件。
(此处记录一个自己很蠢的操作:我在修改并测试完成后直接上传到npm,然后用到这个包的项目install下来使用,发现并没有生效,网上各种百度,怀疑人生两天之后,突然想到,为啥不npm run build一下?然后,然后再上传到npm上,重新install,就好了……好……了…………,通过这个问题我确实再一次深刻的体会到在主流前端的路上,还有很多很多的东西需要学习,希望目前零零散散和依葫芦画瓢的学习有一天能真正的全面的理解各个技术~)
3. 如何使用?
按照正常的逻辑,其实自己修改后的功能如果能在一定程度上起到完善和优化的作用,是可以在Git上给作者发送提交的请求,申请将修改后的代码合并到原项目并请作者更新到npm上;
但是因为我急于测试,考虑到时间的成本,所以就直接采取方案二:作为一个新的包上传到npm上;
(1)修改package.json,将name和version修改为自己的;
(2)如果还没有npm账号,先申请账号,申请过程没有什么特别的,大致就是输入用户名、密码邮箱等常规信息:
(3)打开cmd,切换到项目的路径,npm login,输入用户名密码邮箱等信息;
(4)npm publish
这个步骤由于网络的因素,有的时候会比较慢,耐心等待即可,等出现版本号就成功了!
(5)如何更新已经上传的包?
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]
'npm [-v | --version]' to print npm version
'npm view <pkg> version' to view a package's published version
'npm ls' to inspect current package/dependency versions
几个参数含义为:
<new version>:直接指定新的版本号;
patch:补丁,eg: 1.0.0 --> 1.0.1;
minor:小修小改,eg: 1.0.0 --> 1.1.0;
major:大改,eg: 1.0.0 --> 2.0.0;
设置完版本号之后,npm publish ,等到上传完成即可;
PS: 修改别人的包,最好在README.md里面备注一下修改的内容以及原作者的信息,毕竟是借鉴别人的东西,尊重版权,人人有责~~