用 Python 眼光看Nodejs(二),安装及npm配置

上一节说过,以搜集文章为主,然后自己总结一些常用的知识当做笔记,可能不完整与基础,更多的是给自己做记录。学习一门新的语言,从安装到简单用法开始。所以从Nodejs的安装,运行,代码的导入,以及一般项目的代码组织与部署开始,不用太过于深入,了解大概流程就行,不可能记住所有的命令与用法,只要知道有这个功能大概长什么样,然后去官网手册翻看一下最佳

1. Nodejs安装

1
2
3
4
5
6
7
8
# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
# update npm
npm install npm -g
# show version
node -v
npm -v

其实我一开始直接下载官网编译好的nodejs,之后做命令的链接,如这边的安装教程,也很好理解。但是后来发现一个问题,全局装一些带有命令行的库时,比如express-generator,命令行没有express该命令,需要将express库的bin文件手动连接到/usr/local/bin/express,略微麻烦
当然还有最稳妥的方法,源码安装,去nodejs官网下载source code,然后./configure,make,make install(我在命令前加sudo,然后发现npm install也需要加sudo,不太一样),源码安装有点耗时,我那破机器花了半小时

2. Nodejs模块包库的解释与代码的组织

写到这边时,遇到一些基础概念,自己都有些蒙了,查了蛮久资料,理了一下

先回味下Python的相关含义:

module:一个 .py 文件就是个 module
lib:抽象概念,和另外两个不是一类,只要你喜欢,什么都是 lib,就算只有个 hello world
package:就是个带 init.py 的文件夹,并不在乎里面有什么,不过一般来讲会包含一些 packages/modulesscrapy、flask、Django、numpy、scipy、NLTK、jieba 在你的语境下,一般都被认为是 lib,因为关注点不是他们的代码是怎么组织的。

看了上面的解释,再结合这篇文章 Python 中的黑暗角落(三):模块与包我明白的更多了

再来说说Nodejs,其实也可以同样的理解,一个打印‘hello world’的js文件是一个模块(module),一个带有package.json的文件夹都是包(package)比如express框架,但是它们都是库(lib),因为都是给别人或者自己来用的,只是我们平常接触的一个些库都不是单个文件那么简单的,大多以包的形式存在。

接下来是Nodejs代码组织与部署中间有困惑记录下来

Node.js模块里exports与module.exports的区别?
相关笔记1相关笔记2

3. npm命令

npm之于Nodejs,如,pip之余Python

所以这里把一些常用的命令记录下来,以后就方便翻了

查看npm拥有的全部命令

$ npm - -help
$ npm help

查看某一个npm命令的详细用法

$ npm <command> --help
$ npm help <command>

与npmrc相关的三个文件:

npm项目配置文件:/path/to/my/project/.npmrc
用户配置文件:~/.npmrc (可通过npm config get userconfig查看)
全局配置文件:$PREFIX/etc/npmrc (可通过npm config get globalconfig查看)
npm内置配置文件:/path/to/npm/npmrc

npm获取配置的6种方式(优先级从高到低):

1.命令行参数

$ --proxy http://<server>:<port>

2.环境变量

以”npmconfig”为前缀的环境变量将会被认为是npm的配置属性。
$ npm_config_proxy=http://<server>:<port>

3.用户配置文件

查看用户配置文件路径
$ npm config get userconfig
Linux系统默认路径
$HOME/.npmrc

4.全局配置文件

查看文件路径
$ npm config get globalconfig
我的ubuntu文件路径
/usr/local/node-v10.15.3-linux-x64/etc/npmrc

5.内置配置文件

安装npm的目录下的npmrc文件。

6.默认配置

如果前5条均未设置,npm会使用默认配置参数。

关于npm的配置主要命令可通过npm config - -help来查看(比如用npm config ls -l查看npm全部默认配置)。但是一样,作为简单用户我们没必要用的这么多,我们平常只要设置一个user config,我pip就是这么搞2333。设置也就换换npm注册源来增加下载速度(将registry=https://registry.npm.taobao.org放入~/.npmrc,没有这个文件则新建一个,npm c get registry来验证换了没,上传包记得换回来,不过基本用不到)

npm info 命令可以查看每个模块的具体信息

$ npm info <package>

以树形结构列出当前项目安装的所有模块,以及它们依赖的模块

1
2
3
4
5
6
7
$ npm list

# 加上 global 参数,会列出全局安装的模块
$ npm list -global

# npm list 命令也可以列出单个模块
$ npm list express

使用 npm 安装包

npm install/i <package_name>

在npm install部分,有很多东西值得注意的,比如全局与本地的区别,npm是默认本地安装,像极了python的虚拟环境,完全独立,不用了把文件夹删了就行,很赞。还有开发依赖,生产依赖。所以后来python的pipenv诞生了,吸取了其他包管理器比如npm等的一些优点,已被官方推荐使用

执行package.json中的脚本

npm run

**以上都是些简单的概括,具体的看这npm全面介绍**以及官网手册,东西很多,挑你用得着的看

推荐的npm库版本管理工具

npm-check,检查过期的不正确的和未使用的依赖项,版本神器,中文翻译文档在这


本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!