npm是javascript的包管理工具,是前端模块化下的一个标志性产物 简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率
在npmjs上注册一个自己的账号。 点击创建账号注册一个自己的账号。
如果已经有自己的账号,登录即可:npm login
新建一个项目,cd进去,然后执行npm init来初始化项目的配置。
在执行npm init之前,有两点需要我们注意一下:
npm对包名的限制:不能有大写字母/空格/下划线 我们首先要验证一下我们即将要起的包名是否存在。验证我们即将要起的包名是否存在的方式有两种:
去npm仓库中输入一下“我们即将要起的包名”,看是否可以查找到。
直接使用npm install 包名,如果能够下载下来,那么说明这个包名在npm仓库是存在的,也就是不可使用的。
这样提前验证一下,能够避免一些发布(npm publish)时会出现的这个错误。
配置项 | 意义 | 默认值 | 备注 |
---|---|---|---|
name | 填写你这个包的名字 | 默认是你这个文件夹的名字 | 不过这里要着重说一下,最好先去npm上找一下有没有同名的包。最好的测试方式就是,在命令行里面输入npm install 你要取的名字,如果报错,那么很好,npm上没有跟你同名的包,你可以放心大胆地把包发布出去。如果成功下载下来了。。。那么很不幸,改名字吧。。。 |
version | 包的版本 | 默认是1.0.0 | |
description | 项目描述 | ||
entry point | 入口文件 | 默认是Index.js 你也可以自己填写你自己的文件名 | |
test command | 测试命令 | ||
git repository | git仓库地址 | 如果你的包是先放到github上或者其他git仓库里,这时候你的文件夹里面会存在一个隐藏的.git目录,npm会读到这个目录作为这一项的默认值。如果没有的话,直接回车继续。 | |
keyword | 这个是一个重点,这个关系到有多少人会搜到你的npm包。尽量使用贴切的关键字作为这个包的索引。 | ||
author | 作者 | 写你的账号或者你的github账号吧 | |
license | 执照 | 这个直接回车,开源文件来着 |
然后我们回到我们的文件目录里面去看一看,发现多出来一个package.json文件。
{
"name": "senmeng-header",
"version": "1.0.0",
"description": "header",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"header"
],
"author": "senmeng",
"license": "ISC",
"homepage": "http://www.web3.xin/"
}
首先入口文件是index.js。
!function () {
console.log(`这是引入的包入口`)
}()
然后写个readme.md文件。一般这个readme.md文件都是该项目的一些说明,比如可以放一些项目的启动命令、构建命名等等。
CommonJS标准 我们看到上面代码中使用CommonJS标准。一个单独的文件就是一个模块,模块内将需要对外暴露的变量放到exports对象里,可以是任意对象,函数,数组等,未放到exports对象里的都是私有的。用require方法加载模块,即读取模块文件获得exports对象。这里出现的module,exports,require是JS的新语法吗?不是新语法,只是CommonJS的语法糖。
路径的引用: var Hi = require('./hi');这种是用require加载时写的是相对路径,让Nodejs去指定路径下加载模块。如果省略相对路径,默认就会在node_modules文件夹下找hi模块,那很可能因为找不到而报错。
使用npm adduser命令来添加npm的账户名、密码和邮箱即可
就可以执行npm publish
命令进行发布啦。下面就是见证奇迹的时刻啦,出现截图中的样子就是发布成功啦。
更新npm包也是使用npm publish命令发布,不过必须更改npm包的版本号,也就是package.json中的version字段,否则会报错
在我们的package.json里面有一个version字段。那么,怎么在项目不断构建的过程中调整版本呢? npm有一套自己的版本控制标准——Semantic versioning(语义化版本)
版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。
例如:我原本的项目是1.0.0版本的话 若是1中情况,变为1.0.1 若是2中情况,变为1.1.0 若是3中情况,变为2.0.0
通过npm version