什么是NPM, 为什么要用NPM来管理包
NPM 全称 node package manager, 是 nodejs
的包管理工具。npm的出现,使得我们前端开发者可以更好的引用别人的代码,还可以很方便的分享自己的代码。并且可以很轻松的更新自己分享出去的代码。如果你学过java,那一定对maven并不陌生,npm和maven功能上大体相同,可以毫不夸张的说,npm就是nodejs中的maven。
npm init(创建一个简单的npm项目)
npm最基本的一个命令,就是 npm init
,输入这个命令后,npm会引导你输入一些内容
name > 模块名称
version > 模块版本
description > 模块描述
enter point > 入口文件
test command > 测试命令
git repository > git仓库地址
keywords > 关键词
author > 作者
license > 开源声明
输入完基本信息后,npm会生成一个文件 package.json
,这个文件就包含了刚刚我们通过npm init
引导输入的一些信息。这个就如同maven里面的 pom.xml
文件,主要是包含了这个模块的一些基本信息和依赖。
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
这就是一个最简单的npm项目了。
实例说明
markdown-it-editor 的 package.json
这是我写的一个Vue组件markdown-it-editor
这个组件以及发布到npmjs上面去,大家可以在用npm install markdown-it-editor
下载这个组件,这个组件里面的package.json 比我们上面生成的那个文件多了很多内容。这里摘取一些给大家说明一下。
scripts
脚本
故名思议,就是一些脚本代码,可以通过 npm run script-key
来调用,例如在这个package.json的文件夹下使用 npm run dev
就相当于运行了 node build/dev-server.js
这一段代码。使用scripts的目的就是为了把一些要执行的代码合并到一起,使用npm run 来快速的执行,方便省事。
// 脚本
"scripts": {
"dev": "node build/dev-server.js",
"build": "node build/build.js",
"docs": "node build/docs.js",
"build-docs": "npm run docs & git checkout gh-pages & xcopy /sy dist\\* . & git add . & git commit -m 'auto-pages' & git push & git checkout master",
"build-publish": "rmdir /S /Q lib & npm run build &git add . & git commit -m auto-build & npm version patch & npm publish & git push",
"lint": "eslint --ext .js,.vue src"
}
dependencies
依赖
这个可以说是我们npm 核心一项内容,依赖管理,这个对象里面的内容就是我们这个项目所依赖的js模块包。下面这段代码表示我们依赖了 markdown-it
这个包,版本是 ^8.1.0
,代表最小依赖版本是8.1.0
,如果这个包有更新,那么当我们使用npm install
命令的时候,npm会帮我们下载最新的包。当别人引用我们这个包的时候,包内的依赖包也会被下载下来。
"dependencies": {
"markdown-it": "^8.1.0"
},
devDependencies
开发依赖
在我们开发的时候会用到的一些包,只是在开发环境中需要用到,但是在别人引用我们包的时候,不会用到这些内容,放在devDependencies
的包,在别人引用的时候不会被npm下载。
"devDependencies": {
"autoprefixer": "^6.4.0",0",
"babel-preset-es2015": "^6.0.0",
"babel-preset-stage-2": "^6.0.0",
"babel-register": "^6.0.0",
// ...
"webpack": "^1.13.2",
"webpack-dev-middleware": "^1.8.3",
"webpack-hot-middleware": "^2.12.2",
"webpack-merge": "^0.14.1",
"highlightjs": "^9.8.0"
}
当你有了一个完整的package.json文件的时候,就可以让人一眼看出来,这个模块的基本信息,和这个模块所需要依赖的包。 我们可以通过npm install
就可以很方便的下载好这个模块需要的包。
如何上传 Npm 模块包?
创建用户
首先我们需要在 npmjs 注册一个用户。创建后,在我们package.json 的目录下使用npm login
命令登录刚刚注册的用户
发布包
使用 npm publish
命令发布包,目录内所有的文件都会被上传,我们可以将不想上传的内容 添加到 .gitignore 或者 .npmignore文件中,包名(package.json里面的name)不能和网上现有的包名重复, 我们可以通过 https://npmjs.com/package/
更新包
首先第一步就是需要更新包的版本号,可以手动将package.json里面的version更改至更高的数字,或者使用 npm version patch
(更多关于version的说明)来更新版本号,这个命令也会更改package.json文件,如果你有git仓库的话,这个命令还会添加一个带有新版本号的TAG。
更新版本号过后, 使用npm publish
就可以新版本发布上去了。
npm的出现,不仅仅让我们使用他人代码更加的方便快捷,同时也更方便我们分享自己的作品。我们所有人分享的内容都可以在 npmjs 的官网上搜索到,这让我们前端开发更加的方便快捷。