说明

时间:2024-11-11 13:00:16
  • directories: CommonJS Packages规范说明了几种你可以用directories对象来标示你的包结构的方法
  • : 告诉你库文件夹的位置,目前没有什么地方需要用到lib文件夹,但是这是重要的元信息
  • : 如果你在中指定一个bin目录,在这个目录中的所有文件都会被当做在bin来使用。

    由于bin指令的工作方式,同时指定一个bin路径和设置将是一个错误。如果你想指定独立的文件,使用bin,如果想执行某个文件夹里的所有文件,使用。

  • : 把markdown文件放在这。也许某一天这些文件将被漂亮地展示出来,不过这仅仅是也许

  • : 指定的文件夹里都是man文件,系统通过遍历这个文件夹来生成一个man的数组
  • : 把示例脚本放在这。也许某一天会被用到
  • repository: 项目代码存放地方

    “repository” :
    { “type” : “git”
    , “url” : “/npm/
    }
    “repository” :
    { “type” : “svn”
    , “url” : “/svn/trunk/
    }

  • scripts: 声明一系列npm脚本指令

    1. prepublish: 在包发布之前运行,也会在npm install安装到本地时运行
    2. publish,postpublish: 包被发布之后运行
    3. preinstall: 包被安装前运行
    4. install,postinstall: 包被安装后运行
    5. preuninstall,uninstall: 包被卸载前运行
    6. postuninstall: 包被卸载后运行
    7. preversion: bump包版本前运行
    8. postversion: bump包版本后运行
    9. pretest,test,posttest: 通过npm test命令运行
    10. prestop,stop,poststop: 通过npm stop命令运行
    11. prestart,start,poststart: 通过npm start命令运行
    12. prerestart,restart,postrestart: 通过npm restart运行
  • config: 配置项目中需要的配置参数:

    { “name” : “foo”
    , “config” : { “port” : “8080” }
    , “scripts” : { “start” : “node ” } } }
    中使用.npm_package_config_port来访问port
    用户也可以这样修改:npm config set foo:port 80

  • dependencies: 项目在生产环境中依赖的包

  • devDependencies: 项目在开发和测试环境中依赖的包
  • peerDependencies: 在某些情况下,当一个主机无法require依赖包时,你会想要告诉它还有哪些工具或库与这个依赖包兼容。这通常被成为一个插件。尤其是在host文档中声明的模块会暴露一个特定的接口

    {
    “name”: “tea-latte”,
    “version”: “1.3.5”,
    “peerDependencies”: {
    “tea”: “”
    }
    }
    这将确保tea-latte这个包只会和版本的tea一起被安装。执行npm install tea-latte可能产生以下关系图:
    ├── tea-latte@1.3.5
    └── tea@2.2.0

  • bundledDependencies: {Array},发布时会被一起打包的模块

  • optionalDependencies: 如果一个依赖模块可以被使用, 同时你也希望在该模块找不到或无法获取时npm继续运行,你可以把这个模块依赖放到optionalDependencies配置中。这个配置的写法和dependencies的写法一样,不同的是这里边写的模块安装失败不会导致npm install失败。当然,这种模块就需要你自己在代码中处理模块确实的情况了,例如:

    try {
    var foo = require(‘foo’)
    var fooVersion = require(‘foo/’).version
    } catch (er) {
    foo = null
    }
    if ( notGoodFooVersion(fooVersion) ) {
    foo = null
    }
    // .. then later in your program ..
    if (foo) {
    ()
    }

  • engines: 声明项目需要的node或npm版本范围

    { “engines” : { “npm” : “~1.0.20” } }
    { “engines” : { “node” : “>=0.10.3 <0.12” } }

  • os: 指定你的项目将运行在什么操作系统上

  • cpu: 指定你的项目将运行在什么cpu架构上
  • preferGlobal: 如果你的包需要全局安装,通过命令行来运行,那么设置为true。如果这个包被本地安装则会出现一个警告
  • private: 如果设置为true, 那么npm会拒绝发布它
  • publishConfig