Package.json 配置完全解读,充分了解这些配置有助于我们提高开发的效率( 五 )


scripts: {    start: './node_modules/bin/someTool.js build'}// 简写scripts: {    start: 'someTool build'}所有node_modules/.bin/目录下的命令,都可以用npm run [命令]的格式运行 。
上面的配置在package.json包中提供了一个映射到本地文件名的bin字段,之后npm包将链接这个文件到prefix/fix里面,以便全局引入 。或者链接到本地的node_modules/.bin/文件中,以便在本项目中使用 。
5. filesfiles配置是一个数组,用来描述当把npm包作为依赖包安装时需要说明的文件列表 。当npm包发布时,files指定的文件会被推送到npm服务器中,如果指定的是文件夹,那么该文件夹下面所有的文件都会被提交 。
"files": [    "LICENSE",    "Readme.md",    "index.js",    "lib/" ]如果有不想提交的文件,可以在项目根目录中新建一个.npmignore文件,并在其中说明不需要提交的文件,防止垃圾文件推送到npm上 。这个文件的形式和.gitignore类似 。写在这个文件中的文件即便被写在files属性里也会被排除在外 。比如可以在该文件中这样写:
node_modules.vscodebuild.DS_Store6. manman 命令是 linux 中的帮助指令,通过该指令可以查看 Linux 中的指令帮助、配置文件帮助和编程帮助等信息 。如果 node.js 模块是一个全局的命令行工具,在 package.json 通过 man 属性可以指定 man 命令查找的文档地址:
"man": [ "./man/npm-access.1", "./man/npm-audit.1"]man 字段可以指定一个或多个文件, 当执行man {包名}时, 会展现给用户文档内容 。
需要注意:

  • man文件必须以数字结尾,如果经过压缩,还可以使用.gz后缀 。这个数字表示文件安装到哪个 man 节中;
  • 如果 man 文件名称不是以模块名称开头的,安装的时候会加上模块名称前缀 。
对于上面的配置,可以使用以下命令来执行查看文档:
man npm-accessman npm-audit7. directoriesdirectories字段用来规范项目的目录 。node.js 模块是基于 CommonJS 模块化规范实现的,需要严格遵循 CommonJS 规范 。模块目录下除了必须包含包项目描述文件 package.json 以外,还需要包含以下目录:
  • bin :存放可执行二进制文件的目录
  • lib :存放js代码的目录
  • doc :存放文档的目录
  • test :存放单元测试用例代码的目录
  • ...
在实际的项目目录中,我们可能没有按照这个规范进行命名 , 那么就可以在directories字段指定每个目录对应的文件路径:
"directories": {    "bin": "./bin",    "lib": "./lib",    "doc": "./doc",    "test" "./test",    "man": "./man"},这个属性实际上没有什么实际的作用 , 当然不排除未来会有什么比较有意义的用处 。
六、发布配置下面来看看和npm项目包发布相关的配置 。
1. privateprivate字段可以防止我们意外地将私有库发布到npm服务器 。只需要将该字段设置为true:
"private": true2. preferGlobalpreferGlobal字段表示当用户不把该模块安装为全局模块时 , 如果设置为true就会显示警告 。它并不会真正的防止用户进行局部的安装 , 只是对用户进行提示,防止产生误解:
"preferGlobal": true3. publishConfigpublishConfig配置会在模块发布时生效,用于设置发布时一些配置项的集合 。如果不想模块被默认标记为最新,或者不想发布到公共仓库,可以在这里配置tag或仓库地址 。更详细的配置可以参考 npm-config 。
通常情况下,publishConfig会配合private来使用,如果只想让模块发布到特定npm仓库,就可以这样来配置:
"private": true,"publishConfig": {  "tag": "1.1.0",  "registry": "https://registry.npmjs.org/",  "access": "public"}4. osos字段可以让我们设置该npm包可以在什么操作系统使用,不能再什么操作系统使用 。如果我们希望开发的npm包只运行在linux , 为了避免出现不必要的异常,建议使用windows系统的用户不要安装它,这时就可以使用os配置:


推荐阅读