环境准备安装node环境。学习npm包管理,首先要安装Node.js环境。为此,您可以搜索并查看相关教程进行安装。我不会在这里详细介绍。更新npm工具版本。Node.js带有npm。但是一般内置的npm版本会低于最新的版本,可以手动更新npm版本到最新的,大家可以通过npm官网自行注册,方便后续的学习和使用。npm的基本使用1.体验初始化npm项目环境准备好后,我们先来体验一下初始化npm项目的过程。输入npminit命令后,根据提示输入相应内容。这里我们不需要输入任何内容,只要一直回车就可以保持为空。使用终端工具在指定路径下执行以下命令,新建文件夹,切换到目录下mkdirnpmtestcdnpmtest执行npm初始化命令,然后回车,会出现如下输出npminit/*Thisutility将引导您创建一个package.json文件。它只涵盖最常见的项目,并尝试猜测合理的默认值。请参阅`npmhelpinit`以获取有关这些字段及其作用的权威文档。之后使用`npminstall`安装包并将其作为依赖项保存在package.json文件中。随时按^C退出。包名称:(npmtest)版本:(1.0.0)说明:gitrepository:keywords:author:license:(ISC)Abouttowriteto*************\npmtest\package.json:{"name":"npmtest","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo\"Error:notestspecified\"&&exit1"},"关键字":[],"author":"","license":"ISC"}可以吗?(yes)yes*/初始化命令执行后,项目目录文件中会出现一个package.json文件,文件内容如下:{"name":"npmtest","version":"1.0.0","描述iption":"","main":"index.js","scripts":{"test":"echo\"Error:notestspecified\"&&exit1"},"keywords":[],"author":"","license":"ISC"}此时的目录树结构如下:├─npmtest|├─package.json通过这个过程可以看出,使用npmpackages打包项目其实就是很简单是的,管理也很简单,依赖项的管理也很简单,只有一个package.json文件2.配置用户基本信息设置,初始化默认用户名,邮箱,license。命令行提示设置npmsetinit.author.email"双引号填写你的邮箱"npmsetinit.author.name"双引号填写你的名字"npmsetinit.license"双引号填写证书类型quotes"//例如:我设置的默认信息如下使用npminit-y命令快速初始化npminit-y。我们可以看到在package.json文件中,authorlicense的值是我们设置的默认值。写到****\npmtest\package.json:{"name":"npmtest","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo\"Error:notestspecified\"&&exit1"},"keywords":[],"author":"plasma007<897317986@qq.com>","license":"MIT"}3.创建并发布自己的包在前面的步骤中我们已经体验了如何初始化npm项目,现在我们将创建并发布自己的包。创建文件夹并打开路径。建议文件夹名与包名一致(发布的包不能重名,要用不同的包名代替plasma007-my-npm-test)mkdirplasma007-my-npm-testcd./plasma007-my-npm-test此时的目录树结构:├─plasma007-my-npm-test|创建一个简单的脚本文件lib/index.js(任意名称均可,作为入口文件(一般使用相同的包名或索引),编写一个简单的函数如下:constprintMsg=()=>{console.log("Thisisamessagefromthedemopackage");}module.exports={printMsg}此时的目录树结构:├─plasma007-my-npm-test|├─index.jsnpm初始化项目npminit//根据提示输入项目的相关信息,自己输入后命名为输入名称包名可以在下面的package.json配置文件中修改包名:(默认文件夹名)plasma007-my-npm-test//默认版本号为1.0.0同上版本:(1.0.0)//包说明详细说明:这是我第一次尝试学习npm包管理的项目//入口文件,默认为index.js入口点:(index.js)//测试命令测试命令://项目的git仓库地址,如github,gitrepository://keywords:mytest//项目作者名author:plasma007//包许可类型,默认ISClicense:(ISC)此时MIT目录树结构:├─plasma007-my-npm-test├─lib|├─index.js├─package.json项目初始化成功后提示相关信息已经写入/plasma007-my-npm-test/package.json,回车关于写入****\plasma007-my-npm-test\package.json:{"name":"plasma007-my-npm-test","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo\"Error:notestspecified\"&&exit1"},"author":"plasma007<897317986@qq.com>","license":"MIT"}这样可以吗?(yes)yes如果没有登录过npm账号,需要先登录。如果登录失败,可能是下面文章中的常见问题列表。输入时不显示用户名:plasma007//分别输入自己的账号密码密码:发布写好的包npmpublish//npm会提示很多信息,如果最后没有错误,最后一行是+xxxx@1.0.0,表示发布成功接下来验证你的包是否发布成功。在另一个目录下新建一个目录,打开mkdirtestnpmcd./testnpmnpm安装刚才发布的包npminstall+包名,包名是自己的包名,不要写错了。npminstallplasma007-my-npm-test创建一个test.js文件并导入包中的函数import{printMsg}from'plasma007-my-npm-test';printMsg()修改package.json文件中的配置,增加一个启动脚本,修改文件类型为module{...,"script":{"dev":"node./test.js"},"type":"module"...}执行脚本命令,控制台会输出Thisisamessagefromthedemopackage,说明你发布的包可以正常导入。npmrundev//Display>dev>node./testnpm1.js这是demo包的消息。npm高级包的README文件必须在包项目的根路径下。该文件只能通过软件包版本更新进行更新。npmversionpatch//如果没有预发布号,直接升级小号,如果有预发布,直接去掉npmpublishpackage。://npmjs.com/package/在包名中加入被忽略的文件方案一:采用白名单策略,在package和json中指定打包文件,可以有效防止一些不需要的或不需要的文件因疏忽或其他原因上传文件到公共仓库{...,"files":["/lib"]//必须在/,否则*/lib会被识别...}方案二:使用.npmignore文件add忽略文件,指定的文件名不会被打包,但是有一个bug,有可能是某些文件会被打包,后面跟release和publicscript脚本命令参数给npm脚本传递参数,需要添加--在参数之前,然后JS脚本通过process.env。获取值的参数名称,eg://执行脚本命令时,加入参数name="plasma007"npmrundev--name="plasma007"//从脚本文件中取参数letname=process.env.npm_config_name;经常见错误列表1.无法登录npm在使用npmlogin命令时,如果提示信息为npmnoticeLoginhttps://registry.npm.taobao.org/,登录时会报错。这时候我们需要将npm源切换回默认源,切换源命令如下://切换回默认npm源npmconfigsetregistryhttps://registry.npmjs.org///切换到淘宝源码npmconfigsetregistryhttp://registry.npm.taobao.org///查看当前源码npmgetregistry