前言:
学习了npm,想要自己动手操作一波,于是想着把常用的js代码功能组装成一个对象发布到npm上,以后有用的时候,通过npm安装下来直接使用,这样子就不用重发造轮子了。于是我想了想,发现自己做网站常用的代码功能有表单验证,所以决定把表单验证的JS代码封装成一个对象,然后发布到npm上。
npm:
常用命令:
npm init --yes(初始化配置) npm i (会根据package.json里面的键dependencies,devDependencies来安装相对应的包) npm i 包(默认安装一个最新的包,这个包在node_modules文件夹里面,并且会更新在你的package.json文件) npm i 包@3.0.0(安装一个指定版本的包,会更新在你的package.json文件) npm i 包 --save-dev(安装一个开发环境所需要的包,会更新在你的package.json文件) npm uninstall 包(卸载一个包,会更新在你的package.json文件) npm update 包(更新此包版本为最新版本,会更新在你的package.json文件) npm run 脚本键(会根据package.json里面的"scripts"里面的脚本键自动执行相对于的值) npm publish (根据package.json的name发布一个包) npm unpublish 包名 --force(卸载npm网站上自己上传的包)
配置文件说明:
"name": "npm", //发布的包名,默认是上级文件夹名。不得与现在npm中的包名重复。包名不能有大写字母/空格/下滑线! "version": "1.0.0",//你这个包的版本,默认是1.0.0。对于npm包的版本号有着一系列的规则,模块的版本号采用X.Y.Z的格式,具体体现为: 1、修复bug,小改动,增加z。 2、增加新特性,可向后兼容,增加y 3、有很大的改动,无法向下兼容,增加x "description": "", "main": "index.js",//入口文件,默认是Index.js,可以修改成自己的文件,这个很重要,当你在实际项目使用的时候,let a = require("包名"),它就去会去找对应的文件路径哦。 "scripts": { // 快捷命令,在package.json同目录下输入命令 npm run 键 就会执行 相对应的命令 "bulid": "npx webpack --config myConfig.js" //例如 输入 npm run bulid 就会执行npx webpack --config myConfig.js的命令 。 }, "keywords": [], "author": "", "license": "ISC",//这个直接回车,开源文件协议吧,也可以是MIT,看需要吧。 "dependencies": { // 生产环境所依赖的包 "jquery": "^3.4.1", "sea": "^1.0.2" }, "devDependencies": { // 开发环境所依赖的包 "webpack": "^4.41.6" } }
开始行动:发布一个hp-validate-form包
1.创建包
1.1创建文件夹hp-validate-form
1.2切换终端进入hp-validate-form文件夹 并输入 npm init --yes(初始化配置)
1.3编写JS文件
let validateForm = { /** * 描述:检测邮箱格式是否正确 * @parmas1 检测所需文本 * return bool */ checkEmail(textValue = " ") { let result = false; let text = textValue.replace(/(^\s*)|(\s*$)/g, ""); // 去除左右空格 let reg = /^([a-zA-Z]|[0-9]|_)+@([0-9]|[a-zA-Z])+.com$/; // 检测大陆常见邮箱 result = reg.test(text); return result; }, /** * 描述:检测密码格式至少有length位以上,其中密码必须包含一个数字、一个字母、一个特殊符号,不能有空格,中文字符。 * @parmas1 检测所需文本 @parmas2 设置密码最短长度。 * return bool */ checkPassword(textValue = " ", length = 0) { let text = textValue.replace(/(^\s*)|(\s*$)/g, ""); // 去除左右空格 // 查看长度是否小于多少位 if (text.length < length) return false; // 查看是否有数字 let reg = /\d{1,}/g; if (reg.test(text) == false) return false; // 查看是否有字母 reg = /[a-zA-Z]{1,}/g; if (reg.test(text) == false) return false; // 查看是否有空格 reg = /\s/g; if (reg.test(text)) return false; // 查看是否有中文 reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/g; if (reg.test(text)) return false; // 查看是否有特俗符合 reg = /[~!@#$%^&*()_+/-{}'"]{1,}/g; if (reg.test(text) == false) return false; return true; }, /** * 描述:检测用户格式至少有length位以上,其中用户名不能有空格,中文字符。 * @parmas1 检测所需文本 @parmas2 设置密码最短长度。 * return bool */ checkUserName(textValue = " ", length = 0) { let text = textValue.replace(/(^\s*)|(\s*$)/g, ""); // 去除左右空格 // 查看长度是否小于多少位 if (text.length < length) return false; // 查看是否有空格 reg = /\s/g; if (reg.test(text)) return false; // 查看是否有中文 reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/g; if (reg.test(text)) return false; return true; } }; module.exports = validateForm;
1.4文件目录结构
1.5修改package.json文件
{ "name": "hp-validateform", "version": "1.0.0", "description": "常用的表单验证", "main": "./dist/validateForm.js", "scripts": { }, "keywords": [], "author": "", "license": "MIT", "devDependencies": { } }
2.发布包:
终端输入:npm publish
3.下载包:
终端输入:npm i hp-validate-form
使用:
let obj = require("hp-validate-form");
console.log(obj)
发布成功以及使用成功。
4.后续维护
当你的包需要更新的时候,只需要修改里面的代码,然后更改
"version": "1.0.0",
最后终端输入
npm publish
就可以了。