npm (node package manager)是 JavaScript 世界的包管理工具,并且是 Node.js 平台的默认包管理工具,也是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,里面包含超过 600000 个 包的结构,能够使您轻松跟踪依赖项和版本。
package.json
package.json 是npm必须的一个文件,里面含有了许多关键性的信息。
-
列出项目所依赖的包
-
指定项目可以使用语义版本控制规则使用的包版本
-
使您的构建可复制,因此更易于与其他开发人员共享
下面就是一个package.json文件,我们来看看都有哪些东西。
{
"name": "my_package",
"description": "",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com"
},
"keywords": [],
"author": "",
"license": "ISC"
}
在package.json中必须包含name和version字段
-
name就是你的包的名字,必须是一个小写的单词。
-
version字段的格式必须为x.x.x,并遵循语义版本控制准则。
{
"name": "my-awesome-package",
"version": "1.0.0"
}
author:你可在author中写下你的信息,请使用以下格式(电子邮件和网站都是可选的)
Your Name <[email protected]> (http://example.com)
main:包的入口文件
description: 描述信息,用于描述你的包的主要作用或功能
1. 初始化
我们可以通过npm init 命令来创建package.json。过程中会让你输入以下信息。
当然你也可以使用 npm init --yes 或 npm init -y 进行快速创建
这个过程不需要再去填每个字段,会直接创建一个默认模板。可以注意到我创建的模板中author字段已经包含了我的信息,这是因为之前我对模板的默认配置进行了修改。同样你也可以对其他字段进行默认配置。
> npm set init.author.email "[email protected]"
> npm set init.author.name "dzy"
> npm set init.license "MIT"
2. 正式开始
在上面的配置中提到过 "main": "index.js" ,这是包的入口文件,所以这里我们需要新建一个index.js文件。在index.js中导出所要提供的包的功能方法。这里我就写两个排序函数作为例子。
exports.insertSort = function(arr){
//插入排序
let len = arr.length
let temp
for (let i = 1; i < len; i++) {
temp = arr[i]
let j = i - 1
while(arr[j] > temp && j >= 0){
arr[ j + 1] = arr[j]
j--
}
arr[j + 1] = temp
}
return arr
}
exports.selectionSort = function(arr){
//选择排序
let len = arr.length
let minIndex,temp
for (let i = 0; i < len - 1; i++) {
minIndex = i
for (let j = i + 1; j < len; j++) {
if(arr[j] < arr[minIndex])
minIndex = j
}
temp = arr[i]
arr[i] = arr[minIndex]
arr[minIndex] = temp
}
return arr
}
为了方便他人使用的你包,你可以新建一个readme.md文件,用来对包如何使用进行说明,其中使用的是MarkDown语法。
3. 上传
要想上传自己的包,首先要有自己的npm账户,可以在 https://www.npmjs.com/ 中去注册。
有了账户后在自己的包项目中进行登录
npm login
现在就可以上传我们的包啦
npm publish
可以看到报错了,这里我就犯了一个容易出现的错误,上面说过包名必须是小写的。这里改一下包名重新上传。
上传成功,然后就可以在自己的账户中看到自己上传的包啦
如果想撤销我们上传的包可以用下面这个命令
npm unpublish --force
4. 安装使用
新建一个项目,安装自己上传的包
npm install dzypackage --save
可以看到安装成功,目前是1.0.0版本
引入该包,使用测试
var dzypg = require('dzypackage')
let arr = [34, 86, 25, 49, 53, 25, 35, 98, 5]
console.log('插入排序结果:' + dzypg.insertSort(arr));
console.log('选择排序结果:' + dzypg.selectionSort(arr));
到这里我们的包从开发到上传到使用已经完美的通过
5. 版本的更新迭代
每次更新后我们的包,必须要修改版本号,否则是不能上传的
更改版本号有两个方法
1. 手动修改package.json中的version字段
2. 使用命令行,每次使用下面的命令对应的版本号就会加1,他们分别对应版本号的第1(主版本号).2(次版本号).3(修订号) 位
npm version major
npm version minor
npm version patch
可以看到我使用了 npm version patch 版本号变为了v1.0.1。上传后线上的包也随之更新。
在项目中重新安装,此时的包的版本也变为了最新版本。
博主网站: www.dzyong.top
微信公众号: 《前端筱园》