bibi7 / node-note

不做commit,issue用来放一些学习node的时候的笔记,纯粹记给自己看的东西,不能保证正确性。
MIT License
0 stars 0 forks source link

包与NPM #5

Open bibi7 opened 6 years ago

bibi7 commented 6 years ago

用倒是会用,不过不曾细致的了解,这一块也是需要看一下。

bibi7 commented 6 years ago

CommonJS对包规范的定义:

由包结构和包描述组成。 前者用于组织包的各种结构,后者用来描述包的相关信息

bibi7 commented 6 years ago

包结构:

一个包就是一个文件,一般都是一个目录打包为zip格式或者其他格式,安装解压后还原为目录。正常来说,一个包应该包含如下东西:

  1. package.json: 包描述文件。
  2. bin: 用于存放二进制文件的目录。
  3. lib: 用于存放js代码的目录。
  4. doc: 用于存放文档的目录。
  5. test: 用于存放单元测试用例的目录。
bibi7 commented 6 years ago

包描述: package.json,一般用来描述非代码相关的信息。包的重要组成部分,放在根目录之下

一个描述文件必须包含的相关信息就不写在这里了,比如name啊,description啊,version啊这些,直接标记在书上p34。(内容还挺多的)

bibi7 commented 6 years ago

p37的一句话惊艳到我了。

CommonJS包规范是理论,npm则是其中的一种实践。

说得真好。

bibi7 commented 6 years ago

关于npm安装: (虽然了解,不过还是加深一下印象)

npm install xxx,直接在当前目录下新建node_modules目录,在该目录下创建xxx目录并把包解压在这个目录下。 后接--save-dev以及--save主要是直接把依赖模块的信息写入package.son,不用手动来输入

不同点在于: --save-dev会把该模块添加到devdependencies。 如果是--save的话,会添加到dependencies。 顾名思义,一种是开发时需要的依赖,另一种是上线运行时需要的依赖,怎么接后缀就看项目模块需要了。

安装好依赖后直接require(xxx)即可

还有个比较容易的误解,-g全局安装其实并不是将一个模块安装为全局包的意思,也并不意味着可以在任何地方通过require()来引用它,实际上-g是将一个包安装为全局可用的可执行命令。(出自p38。类似于全局可用的命令行?)

bibi7 commented 6 years ago

package.json中的scripts字段也蛮好理解的。

其实就类似于我工作中把git statusgit fetch origin封装成了gitsgitfo一样(。) 比如把npm run dev封成一个start, 开发的时候直接npm start就行

bibi7 commented 6 years ago

如何发布npm包这一块的笔记就不放了,直接在书上。(包括cmd和amd规范也是)