资讯专栏INFORMATION COLUMN

npm入手笔记0x001-项目初始化和包增删改

Baoyuan / 3288人阅读

摘要:引用并执行如果安装出错,比如写错了包名,将会发生以下事情命令行报错使用可以自己新建一个文件编写也可以直接使用来初始化一个该命令是一个交互式命令,可以根据提示输入相应信息生成相应的,命令提示后面的中为提示内容,可以选择一路,然后再去修改。

0x001 概述

npm是一个包管理工具,本文章基本算是对官方文档的解读、翻译和实操笔记,顺便说明使用npm中的坑。

0x002 安装Node.js

安装方式参照Node.js官方文档即可,安装完成后,命令行键入node -v成功执行说明安装成功了

$ node -v
v6.3.1

顺便检查一下npm版本并更新它

$ npm -v
5.3.0
$ npm install npm@latest -g

/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
+ npm@5.4.1
added 22 packages, removed 22 packages and updated 133 packages in 11.208s


   ╭─────────────────────────────────────╮
   │                                     │
   │   Update available 5.3.0 → 5.4.1    │
   │     Run npm i -g npm to update      │
   │                                     │
   ╰─────────────────────────────────────╯
0x003 本地安装包

新建一个项目文件夹

mkdir 0x003-install-local
cd 0x003-install-local

安装loadash

$ npm install lodash
npm WARN saveError ENOENT: no such file or directory, open "/MY_PROJECT/PROJECT_OWN/NodeJS/npm/package.json"
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open "/MY_PROJECT/PROJECT_OWN/NodeJS/npm/package.json"
npm WARN npm No description
npm WARN npm No repository field.
npm WARN npm No README data
npm WARN npm No license field.

+ lodash@4.17.4
added 1 package in 0.862s

成功安装包之后,将会发生以下的事情:

在项目的目录会生成一个node_modules文件夹,里面放置了我们项目所有的本地依赖包

$ cd node_modules
$ ls
lodash

如果该项目存在package.json文件,将会把该lodash加入到项目的依赖中,这里没有package.json,所以安装的时候有个WARN

生成一个package-lock.json,将项目的依赖版本锁定,这样迁移的时候,重新安装依赖就会安装指定版本的包(新版本才有,待验证)。

引用并执行

$ vim index.js 

// index.js
var lodash = require("lodash");
var output = lodash.without([1, 2, 3], 1);
console.log(output);

$ node index.js
[ 2, 3 ]

如果安装出错,比如写错了包名,将会发生以下事情:

命令行报错

npm install loadashsh
npm ERR! code E404
npm ERR! 404 Not Found: loadashsh@latest

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/FollowWinter/.npm/_logs/2017-09-10T11_37_44_504Z-debug.log
0x004 使用package.json

可以自己新建一个文件编写package.json,也可以直接使用npm init来初始化一个

$ mkdir 0x004-use-package_json
$ cd 0x004-use-package_json/
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install ` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (0x004-use-package_json) 
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /MY_PROJECT/PROJECT_OWN/NodeJS/npm/0x004-use-package_json/package.json:

{
  "name": "0x004-use-package_json",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Is this ok? (yes) 

该命令是一个交互式命令,可以根据提示输入相应信息生成相应的package.json,命令提示后面的()中为提示内容,可以选择一路enter,然后再去修改package.json。执行成功后,将会在项目中生成package.json文件。

// package.json
{
  "name": "0x004-use-package_json", 
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

再一次安装包

$ npm install lodash
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN 0x004-use-package_json@1.0.0 No description
npm WARN 0x004-use-package_json@1.0.0 No repository field.

+ lodash@4.17.4
added 1 package in 1.378s
//package.json
{
  "name": "0x004-use-package_json",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "lodash": "^4.17.4"
  }
}

可以发现,多了一个dependencies节点,该节点保存了项目所有的依赖,当然我们也可以通过对该节点的修改,改变项目的依赖,比如删除lodash,或者改变lodash版本。
删除dependencies中的lodash之后再执行

$ npm install 
npm WARN 0x004-use-package_json@1.0.0 No description
npm WARN 0x004-use-package_json@1.0.0 No repository field.

removed 1 package in 0.249s
$ cd node_modules
$ ls -al
.    ..

可以看出,lodash包已经被移除
npm install可以根据package.json的指示安装、更新、删除依赖。

0x005 更新依赖
npm update
0x006 删除依赖
$ npm uninstall lodash
npm WARN 0x004-use-package_json@1.0.0 No description
npm WARN 0x004-use-package_json@1.0.0 No repository field.

removed 1 package in 0.247s
0x007 全局包管理

和安装本地包没有区别,只是加了个-g参数,表示global

$ npm install -g jshint
/usr/local/bin/jshint -> /usr/local/lib/node_modules/jshint/bin/jshint
+ jshint@2.9.5
added 31 packages in 41.728s

同理包的更新和删除也无异,

$ npm install -g jshint
$ npm update -g jshint
$ npm uninstall -g jshint
removed 31 packages in 0.365s
0x008 总结

一篇文章太长,打起字来就会卡顿, 我打了很多字吗?

npm init: 初始化项目,生成package.json

npm install [ [--save|--save-dev] -g]:

根据项目中的package.json初始化项目、更新依赖

如果指定了,则安装

npm update []:

更新项目依赖到新版本

如果指定了,则更新

npm uninstall : 移除依赖,并更新dependencies或者dependencies-dev中的节点

0x009 资源

项目github

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88497.html

相关文章

  • npm入手笔记0x002-发布自己的Node.js模块及其版本管理

    摘要:概述本篇文章承接上文,记录的是如何发布自己的模块编写模块新建项目并初始化编写模块代码发布模块测试模块命名空间每个人都可以发布自己的包,难免会有包名相同的情况,如果想要使 0x001 概述 本篇文章承接上文,记录的是如何发布自己的Node.js模块 0x002 编写模块 新建项目并初始化 $ mkdir 0x005-publish-own-module $ cd 0x005-publis...

    mrli2016 评论0 收藏0
  • npm入手笔记0x004-npm命令及配置文件说明(未完善)

    摘要:概述本篇文章承接上文,记录的的配置和命令的详细说明。的配置说明项目名称,的时候就是使用这个。案例说明版本号,符合的版本规范的版本号,默认从开始。 0x000 概述 本篇文章承接上文,记录的package.json的配置和npm命令的详细说明。 0x001 package.json的配置 name: 说明:项目名称,npm install的时候就是使用这个name。 案例:loda...

    mzlogin 评论0 收藏0
  • npm入手笔记0x005-v2和v3包依赖管理的不同

    摘要:概述本篇文章承接上文,记录的和版本在包管理方面的异同,基于阅读官方原文整理简化。此时的文件夹如下所示包的复制和取消复制假设我们有一个项目依赖添加依赖依赖,此时添加依赖依赖,此时升级依赖依赖,此时升级依赖依赖,此时执行查看文件夹资源项目 0x000 概述 本篇文章承接上文,记录的v2和v3版本在包管理方面的异同,基于阅读官方原文整理简化。 0x001 v2管理方式 假设有模块A、B、C,...

    ssshooter 评论0 收藏0
  • npm入手笔记0x003-一些常见问题记录

    摘要:如何选择就如果上面所有,需要打包进生产环境就保存到,只是在开发或者打包的时候使用的就保存到即可。提示不能发布当前版本解决方案不能发布已经发布的版本,修改一下版本号就可以了想不到了,想到了再写资源项目 0x001 概述 本篇文章承接上文,记录的是一些使用过程中的疑惑 0x001 墙的原因使得包下载太慢 解决方案:使用淘宝cnpm,推荐使用cnpm,因为如果修改npm仓库,将会导致无法发布...

    luffyZh 评论0 收藏0
  • React入门0x001: 环境配置和 helloworld

    摘要:概述开坑系列文章,不知道会写到什么程度,毕竟写文章并不在行,存在当做笔记做,先不讲理论,实践先行。 0x000 概述 开坑 react 系列文章,不知道会写到什么程度,毕竟写文章并不在行,存在当做笔记做,先不讲理论,实践先行。 0x001 创建项目 $ mkdir 0x001-helloworld $ cd 0x001-helloworld $ yarn init -y 0x0002 ...

    yibinnn 评论0 收藏0

发表评论

0条评论

Baoyuan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<