012-发布自己的Npm
欢迎各位同学加入:
React-Native群:397885169
大前端群:544587175
大神超多,热情无私帮助解决各种问题。
大纲:准备工具
1-:安装nodeJS
2-:注册一个github账户用于托管代码
3-:注册一个npm账户
4-:开发你的module,更新至github
5-:发布module至npm
一:安装nodeJS
https://nodejs.org/en
根据系统安装对应的版本,安装完后对应的npm也会被安装进去进入终端,输入命令查询安装版本!
node -v
npm -v
对于React-Native 开发来说,已经安装了Node,所以,此步可以跳过。
二:github创建项目,初始化
GitHub地址:https://github.com
1-:注册账户,新建项目,然后clone到本地
2-:终端进入到项目文件夹(此处为重点),执行
npm init
命令,构建模块的描述文件,系统会提示你输入所需的信息,不想输入就直接Enter跳过。
主要的几个配置如下:
name:模块名,发布之后就可以使用npm install xxxx 进行下载使用
version:版本号,语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号(默认为1.0.0);
description:简单介绍自己的模块;
main:入口文件,必要,当通过require('xxx')时,是读取main里声明的文件(默认为index.js);
test command:测试命令;
git repository:git仓库地址;
keywords:关键词,可以通过npm搜索你填写的关键词找到你的模块;
author:作者信息,可以之后编辑更详细一些;
license(ISC):代码授权许可;
以上放心可以大胆写,因为之后反正要改。
三:注册Npm账号
1-:在npm 注册用户
2-:在本地登录自己的npm账号
npm login
3:查询或者登陆别的用户命令,然后进行登录
npm whoami
npm login
以上三种方式,任选其一。
四:编码
1-:导入项目到WebStorm中,新建Index.js文件,此文件为访问此node_modules的入口文件;
2-:此入口文件大致样式如下,可根据自己的需求进行适当调整
'use strict';
import Label from './components/Label/Label';
import ListRow from './components/ListRow/ListRow';
const FcsUI = {
Label,
ListRow,
};
module.exports = FcsUI;
3-:在使用此node_modules时,需要使用例如‘ Label’组件时,则可使用如下方式进行引用:
import {Label} from 'FcsUI';
4-:在此Npm中,会有各种各样的组件,而在index.js文件中,一般情况下,只进行组件的导出。特殊情况,需要特殊处理,详情可参考源码。
五:更新代码到GitHub并进行发布:
1-:提交代码到GItHub;
2-:进入此项目根目录,执行如下命令
npm login
进行登录
3-:使用如下命令进行发布:
npm publish
发布过程中,可能会出现如下错误:
-1:
npm ERR! no_perms Private mode enable, only admin can publish this module:
解决方式如下:
npm config set registry=http://registry.npmjs.org
-2:
npm ERR! you do not have permission to publish "your module name". Are you logged in as the correct user?
解决方案如下:
提示没有权限,意思就是提示此module名在npm上已经被使用,此时,需要去官网npm搜索你需要或者想要想要使用的Npm模块名称,如果搜索不到,就可以用,并且把package.json里的name修改过来,重新npm publish.
六:更新,测试,第三方依赖
1-:更新:
当需要更新Npm 代码时,需要修改位于package.json里面的version字段,切记,不更新此版本号,无法进行更新
2-:测试:
关于测试,只能使用笨方法——其他地方写好代码后进行测试之后,把相关代码进行复制,进行发布。
3-:第三方依赖
在node_modules使用其他第三方时,不需要在此Npm项目根目录下执行:
npm i
而是继续采用笨方法,在其他正常使用的位置进行测试验证。验证完成后,复制相关代码。若使用此Npm时,需要执行添加此Npm命令,此刻,就会把代码中的其他三方进行依赖下载。