当前位置: 首页 > 科技观察

NPM使用技巧

时间:2023-03-16 15:33:56 科技观察

如果你是JavaScript开发者,你一定对NPM不陌生。它不仅是一个平台,更是一个工具。在这个平台上,我们可以使用其他开发者提供的功能代码,当然我们也可以在这里提交自己的代码,分享给全世界的开发者。下面记录一些使用NPM作为工具的小技巧。npmrc.npmrc是一个npm配置文件,可以在多个地方定义。~/.npmrc用户根目录,根目录下的所有npm命令都会查询配置/path/to/npm/npmrcnpm内置配置文件./.npmrc当前项目根目录,用于配置当前项目具体的配置npmrc对我们很有用,我们可以配置用户名、注册表、邮箱等信息eg:save=truesave-exact=trueemail=wfsovereign@outlook.comusername=wfsovereignregistry=https://registry.npm.taobao.orgnpm最头疼的问题之一就是版本号,这里配置了save和save-exact属性,作用是让我们npminstall命令安装的依赖自动保存在package.json文件的dependencies中,并且make版本号固定。国内的一些服务器在拉一些被封包的时候经常出现故障或者速度很慢。这时候我们可以试试淘宝npm镜像(这是一个完整的npmjs.org镜像,可以用这个代替官方版(只读),同步频率目前是10分钟一次,保证和官方同步尽可能提供服务)。官方还定制了cnpm,具体看具体情况。例如,我的一个项目部署在微软的Asure上。该服务器感觉它被阻止了。如果你有幸从npm官方库下载到phantomjs的zip文件,那你得下载两三次。后来为了解决这个问题,尝试了淘宝图片,但是问题出在cnpm的使用上。cnpm拉取的包本地编译不了。后来又换回了npm,用的是淘宝镜像。一切正常~package.jsonpackage.json是项目的配置管理文件。它定义了本项目所需的每个依赖模块和项目配置信息(名称、版本号、许可证等)。一个基本的package.json必须有一个名称和一个版本,看起来像这样:{"name":"xxx","version":0.0.0}我们可以通过npminit命令初始化并创建一个package.json文件,{"name":"test","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo\"error:notestspecified\"&&exit1"},"author":"wfsovereign","license":"ISC","devDependencies":{},"dependencies":{}}下面的子属性引入了scriptsscripts,定义了一些脚本命令的npm命令的缩写,通过这些命令,我??们可以很容易地启动项目,进行测试,或者在某些指令之前得到一些钩子来提前做一些事情,"scripts":{"pretest":"echo\"thisispretest\"","test":"echo\"Error:notestspecified\"","posttest":"echo\"thisisposttest\""}当我们执行npmtest时,我们会得到如下输出:thisispretesttest@1.0.0testecho“错误:notestspecified”错误:notestspecifiedtest@1。0.0posttestecho"thisisposttest"thisisposttest通过上面的实验我们可以知道prexx指令是执行前指令,postxx是执行后指令。它们都与xx指令密切相关。mainmain指定项目加载的入口文件,默认为根目录inde.jsfilefile是一个字符串数组,指定当前目录下的哪些文件应该包含在我们发布的包中。这在我们发布包的时候非常有用,因为并不是开发包中的所有文件夹都需要发布。当然,下面这个文件会一直被包含进来,不管我们设置与否,package.jsonREADMECHANGES/CHANGELOG/HISTORYLICENSE/LICENCENOTICE"main"字段中的文件keywordskeywords指定了在库中搜索时可以搜索哪些关键字,所以一般这样这里会写更多一些item相关的词,是一个字符串数组。其他属性的详细信息可以查看官方文档语义版。关于语义版本号,这里就不说了。我将把一些最常见的版本标识符(*、~、^)放在preferencenpmsemverGravatarssemverNodejs项目中。我经常忘记它们的含义,所以在这里记录它们:*Anyversion1.0.0installthespecified1.0.0versionlodash:4.7.0willinstallexact4.7.0toournode_moduledirectory~1.0.0install>=1.0.0less比1.(0+1)。***版本0^1.0.0安装>=1.0.0***版本小于(1+1)。如果已经有账号,直接下一步npmwhoami查看当前用户,确认当前用户是使用npmpublish发布包的,就可以直接发布了。当然这时候可能会出现各种问题,比如你的包和别人的包重名了,或者当前包的版本号已经发布了等等。开发包。我们在开发包的时候不能避免一些调试,但是我们既不想发布又想在调试的过程中保证当前的功能是可用的。这个时候,有两种方法可以帮我们解决这个问题。关于npmlinknpmlink的详细介绍,可以看官网。这里介绍三种用法:直接在我们开发包的主目录下直接使用。这时候相当于符号链接了npm全局目录下的当前包。npmlinkpackage-name相当于将全局安装的包链接到我们当前目录中的node_module。在package.json文件的dependencies中使用如下声明,然后像使用已经正常发布的包一样安装使用。“依赖项”:{“栏”:“文件:../foo/栏”}