NPM使用技巧

如果你是一个JavaScript系的开发者,一定不会陌生NPM,它既是一个平台,也是一个工具。在这个平台上,我们能够使用其他开发者提供的功能代码,当然我们也能将我们自己代码提交到这里分享给世界上的开发者。

以下记录一些NPM作为工具的一些使用技巧。

npmrc

.npmrc 做为npm的配置文件,它可以定义在多个地方。


  1. ~/.npmrc 

用户根目录,根目录内所有的npm指令都会查询到该配置


  1. /path/to/npm/npmrc 

npm内建配置文件


  1. ./.npmrc 

当前项目根目录,用于配置特定于当前项目的配置

npmrc对我们来说十分有用,我们可以配置例如username、registry、email等信息。 eg:


  1. save=true  
  2. save-exact=true  
  3. email=wfsovereign@outlook.com  
  4. username=wfsovereign  
  5. registry=https://registry.npm.taobao.org 

npm最让人头疼的问题之一就是版本号了,这里配置了save和save-exact属性,作用是让我们 npm install 指令安装的依赖自动保存在 package.json 文件的 dependencies 中并且让版本号固定。

一些国内的服务器在拉取某些被墙的包的经常会失败或者速度很慢,这个时候我们可以试试 淘宝NPM镜像 (这是一个完整 npmjs.org
镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步)。官方还定制了 cnpm
,这个看具体情况而定了。比如,我曾经的一个项目,部署在微软的Asure上面,这个服务器感觉被墙的厉害,用官方的npm库下phantomjs的zip文件运气好的话也得下个两三次才能下下来,后来为了解决这个问题尝试了淘宝镜像,不过问题就出在用了cnpm,用cnpm拉的包在本地编译不了,后来换回npm,使用淘宝镜像,一切正常了~

package.json

package.json 是项目的配置管理文件,它定义了这个项目所需要的各个依赖模块以及项目的配置信息(名字,版本号,许可证等)。一个最基本的 package.json 必须有 name 和 version ,差不多长这样:


  1. {  
  2. "name": "xxx",  
  3. "version": 0.0.0  

我们可以通过 npm init 指令初始化创建一个package.json文件,


  1. {  
  2. "name": "test",  
  3. "version": "1.0.0",  
  4. "description": "",  
  5. "main": "index.js",  
  6. "scripts": {  
  7. "test": "echo \"Error: no test specified\" && exit 1"  
  8. },  
  9. "author": "wfsovereign",  
  10. "license": "ISC",  
  11. "devDependencies": {  
  12. },  
  13. "dependencies": {  
  14. }  

下面分属性介绍

scripts

scripts 定义了一些脚本指令的npm命令缩写,通过这些命令我们可以方便的启动项目、进行测试或者拿到一些钩子来做某些指令前预先做的事,


  1. "scripts": {  
  2. "pretest": "echo \"this is pre test\" ", 
  3. "test": "echo \"Error: no test specified\"",  
  4. "posttest": "echo \"this is post test\""  

当我们执行 npm test 会得到如下输出:


  1. this is pre test  
  2. test@1.0.0 test  
  3. echo “Error: no test specified”  
  4. Error: no test specified  
  5. test@1.0.0 posttest  
  6. echo “this is post test”  
  7. this is post test 

通过如上实验,我们能够知道, prexx 指令是一个预执行指令, postxx 是一个后置指令,他俩都和 xx 指令强相关。

main

main 指定项目加载的入口文件,默认是根目录的inde.js

file

file 是一个字符串的数组,指定我们发布的包应该包含当前目录的哪些文件,这个在我们发布包的时候很有用,因为开发包里面的文件夹不是都需要发布出去的。当然一下文件是始终会被包含进去的,不论我们是否设置,


  1. package.json  
  2. README  
  3. CHANGES / CHANGELOG / HISTORY  
  4. LICENSE / LICENCE  
  5. NOTICE  
  6. The file in the “main” field 

keywords

keywords 指定了在库中搜索时能够被哪些关键字搜索到,所以一般这个会多写一些项目相关的词在这里,这是一个字符串的数组。

其余属性详情可以查询 官方文档

semantic version

关于语义化的版本号,这里不多讲,放一些preference


  1. npm semver  
  2. Gravatars semver 

Nodejs项目中最常见的一些版本标识( *, ~, ^ ),经常忘了它们的含义,这里记录一下:

  • * 任意版本
  • 1.0.0 安装指定的1.0.0版本

lodash: 4.7.0 会安装准确的4.7.0到我们的node_module目录

  • ~1.0.0 安装 >= 1.0.0 小于 1.(0 + 1).0的最新版本
  • ^1.0.0 安装 >= 1.0.0 小于 (1 + 1).0.0的最新版本

package publish

如何发布一个包?

  1. npm addUser 按照提示输入账号密码,创建一个npm的账号,如果已有账号直接到下一步
  2. npm whoami 查看当前用户,确认是使用当前用户来发布包
  3. npm publish 然后就可以直接发布了,当然这个时候可能会出现各种问题,比如你的包和别人的重名了,或者当前的包的版本号已经发布过了等等

说到发布包,这里在记录一些开发包的小技巧。

我们在开发包的时候免不了一些调试,但是这些调试的过程我们并不想它发布又想确保当前的功能是可用的,这个时候有两个办法能够帮助我们来解决这个问题。


  1. npm link 

关于 npm link 的详细介绍我们可以看 官网 ,这里介绍三种用法:

直接在我们开发包的主目录下直接使用,这个时候,相当于我们在npm global的目录下符号链接了当前包。

npm link package-name , 作用相当于把一个全局安装的包link到了我们当前目录下node_module中。

在 package.json 文件的dependencies中使用如下方式声明,然后就如同使用一个已经正常发布的包一样安装使用就行。


  1. "dependencies": {  
  2. "bar": "file:../foo/bar"  

作者:佚名

来源:51CTO

时间: 2024-09-17 04:47:09

NPM使用技巧的相关文章

提升你的开发效率,10 个 NPM 使用技巧

对于一个项目,常用的一些npm简单命令包含的功能有:初始化一个文件夹( npm init ),下载npm模块( npm install ),创建测试( npm test ) 和自定义脚本( npm run ).但是,进一步了解一些 npm 的使用技巧可以彻底改变你的日常开发任务. 注: 如果你需要关于初学npm的参考,可以参阅我们的初学者指南.如果你对 npm 和 Yarn 之间的差异感到困扰,可以参阅我们发表的文章:Yarn vs npm:你需要知道的一切 获取帮助 npm 文档 和 CLI

有关npm rum的3个简洁技巧

[编者按]本文作者为来自 MongoDB 的 NodeJS 工程师 Valeri Karpov.Valeri 专注于维护常见的 Mongoose ODM,是<Professional AngularJS>一书的作者.本文由 OneAPM 工程师编译呈现,以下为正文. 大多数Node.js 开发人员都将npm用做包管理器.然而,npm同样也是一个强大的task runner,能够代替gulp.npm run命令让你在package.jso上定义客制化脚本,这样一来就简化了复杂的与节点相关的 sh

JS新包管理工具yarn和npm的对比与使用入门_javascript技巧

这篇文章会通过以下几个方面介绍yarn的: yarn对比npm解决了什么问题,带来哪些便利. 获取yarn的正确姿势 yarn的使用入门(介绍一些常用的命令 个人使用心得 yarn对比npm的优点 根据官方文档yarn具有6大优点 1.离线模式 yarn会有一个缓存目录,会缓存以前安装过的软件包,再次安装时就不必从网络下载了,大大加速安装速度. 这一点很重要,npm 饱受诟病的一点就是,每次安装依赖,都需要从网络下载一大堆东西,而且是全部重新下载,工程多的时候比较烦人. 我司部署node项目,是

持续部署单页应用的7大技巧

[编者按]本文作者为 Parker Selbert,主要介绍高效部署静态托管应用的7大技巧,助你实现持续.安全且高效的交付流程.本文系国内 ITOM 管理平台 OneAPM 编译呈现. 单页应用不仅能提供非常丰富的用户体验,而且为持续开发开辟了一个完全不同于以前的新途径.将前端应用从服务器分离,从而简化团队职责的划分,是非常合理的策略.维护一个单独的前端代码库,允许团队通过 API ,快速迭代应用特性.改善交互功能. 然而,交付静态资源的过程并不都是如此顺利的.在开始持续部署静态资源之前,你的团

Vue概念及常见命令介绍(1)_javascript技巧

Vue.js介绍 Vue.js是JavaScript MVVM(Model-View-ViewModel)库,十分简洁,Vue核心只关注视图层,相对AngularJS提供更加简洁.易于理解的API.Vue尽可能通过简单的API实现响应的数据绑定和组合的视图组件. Vue和MVVM模式 MVVM模式即Model-View-ViewModel. Vue是以数据为驱动的,Vue自身将DOM和数据进行绑定,一旦创建绑定,DOM和数据将保持同步,每当数据发生变化,DOM会跟着变化. ViewModel是V

vue2.0开发实践总结之入门篇_javascript技巧

vue2.0 据说也出了很久了,博主终于操了一次实刀. 整体项目采用  vue +  vue-router +  vuex (传说中的vue 全家桶),构建工具使用尤大大推出的vue-cli 项目是图片分享社交平台.   项目预览:   1 .vue-cli构建工具必知 我选用的vue-cli 是基于webpack的版本 ,不了解webpack的可以先粗略看下下面的基本知识 webpack 基本知识点: entry:入口点,webpack会从入口点设置的js文件开始对项目进行构建,过程中,所有入

使用Vue.js创建一个时间跟踪的单页应用_javascript技巧

Vue.js很简单.正因为如此简单,人们常常认为其适合于小项目.虽然真正的Vue.js核心知识只是一个视图层库,实际上有一组工具,将使您能够使用Vue.js构建完整的大规模SPA(单页应用程序). SPA应用可以在不完全重新加载网页,产生一个更流畅的用户体验到的用户交互响应.还有好的副作用,SPA还鼓励后端专注于展示数据端点,这使得整体架构更加分离,并且对于其他类型的客户端可能是可重用的. 从开发人员的角度来看,SPA和传统的后端呈现应用程序之间的主要区别是,我们必须将客户端视为具有自己架构的应

巧用Vue.js+Vuex制作专门收藏微信公众号的app_javascript技巧

本文一步一步教大家如何利用Vue.js + Vuex制作专门收藏微信公众号的app 项目地址: https://github.com/jrainlau/wechat-subscriptor   下载&运行 git clone git@github.com:jrainlau/wechat-subscriptor.git cd wechat-subscriptor && npm install npm run dev   // run in dev mode cd backend-se

如何利用JSHint减少JavaScript的错误_javascript技巧

前言 JSHint用于分析和验证JavaScript代码是否符合您的编码规则.这个强大的工具可以帮助发现您代码中错误和问题T,它强制你的团队保持一定的编码惯例和风格,使得代码可靠和更容易阅读. 在这篇文章中,我将向您展示如何安装.配置和使用JSHint. 还包括一个例子,列出了一些我最喜欢的能使用JSHint的编辑器. 安装 JSHint 安装JSHint非常容易,你可以使用 Node 包管理器 (npm)来做.如果你还没有安装npm,你可以从 nodeJS website下载最新版,来安装No