• Javascript模块化开发1——package.json详解


    一、环境安装

    Node.js 安装包及源码下载地址为:https://nodejs.org/en/download/
    在该页面你可以根据不同平台系统选择你需要的 Node.js 安装包。
    Node.js里面集成了npm,npm是一种包管理工具,允许用户从NPM服务器下载别人编写的包或命令行程序并分享自己编写的包或命令行程序。

    二、创建模块

    输入命令npm init后根据提示输入相关信息,如名称,描述,版本等,将会创建一个初始的package.json。
    接着可以编辑相关属性来定义该模块,大多数的属性都很直观,下面只挑几个进行说明:

    1.name

    项目/模块名称。
    命名规范如下:

    • 名称可以前缀scope标识,如@myorg/mypackage。
    • 名字也将作为require()命令的参数,所以应该尽量简明,长度必须小于等于214个字符。
    • 名字将会被作为url的一部分,所有要符合http url的一般命名规则,不能包含url非法字符,也不能以"."(点)或者"_"(下划线)开头。
    • 不能包含大写字母。
    • 名字里不要再包含"js"和"node",且不要用和核心Node模块相同的名字。
    • 如果包要发布到NPM平台上的话,最好先访问https://www.npmjs.com/检查下有没有重名。

    2.repository

    用于指示代码存放的位置。

     "repository": {
      "type": "git",
      "url": "https://github.com/***.git"
    }
    "repository": {
      "type": "svn",
      "url": "https://***"
    }
    

    3.private

    设为true这个包将不会发布到NPM平台下。如果不设置repository,则应该设置private为true。

    4.files

    包所包含的所有文件,可以取值为文件夹。
    通常我们还是用.npmignore来去除不想包含到包里的文件。
    不管如何设置,有些文件会永远都包含在包里:

    package.json
    README
    CHANGES / CHANGELOG / HISTORY
    LICENSE / LICENCE
    NOTICE
    main里包含的文件

    不管如何设置,有些文件会永远都不能包含在包里:

    .git
    CVS
    .svn
    .hg
    .lock-wscript
    .wafpickle-N
    ..swp
    .DS_Store
    ._

    npm-debug.log
    .npmrc
    node_modules
    config.gypi
    *.orig
    package-lock.json

    5.main

    main字段指定了加载的入口文件,require('moduleName')就会加载这个文件。这个字段的默认值是模块根目录下面的index.js。

    6.browser

    定义 npm 包在 browser 环境下的入口文件

    7.Bin

    bin项用来指定各个内部命令对应的可执行文件的位置。很多的包都会有执行文件需要安装到PATH中去。
    这个字段对应的是一个Map,每个元素对应一个{ 命令名:文件名 },例如:

    "bin" : {
      "myapp" : "./cli.js"
    }
    

    在安装第三方带有bin字段的npm,那可执行文件会被链接到当前项目的./node_modules/.bin中
    可通过命令行node node_modules/.bin/myapp执行相关js文件

    8.config

    可以用来添加命令行的环境变量,例如:

     {
      "name" : "test",
      "config" : { "msg" : "hello" },
      "scripts" : { "start" : "node index.js" }
    }
    

    在 index.js 中,我们可以直接使用该环境变量:

    console.log(process.env.npm_package_config_msg);
    

    9.dependencies

    指定运行时依赖的包。

    10.devDependencies

    指定开发时依赖的包。

    11.peerDependencies

    如果你的包是插件,而用户在使用你的包时候,通常也会需要这些依赖(插件),那么可以将依赖列到这里。

    12.bundledDependencies

    绑定的依赖包,发布的时候这些绑定包也会被一同发布。

    13.optionalDependencies

    可选的依赖,即使这些依赖没有,也可以正常安装使用。

    14.scripts

    定义可被npm run command执行的所有命令,可以通过输入npm run查看所有的命令列表。
    比如下面定义了运行 npm run start和npm run stop时,所要执行的命令。在cmd下输入命令npm run start相当于输入命令node start.js"

    "scripts": {
      "start": "node start.js",
      "stop": "node stop.js",
    }
    

    scripts命令具有以下特性:

    • 执行npm run command时,会先安装devDependencies中所定义的依赖的包,再运行command所定义的命令。
      例如:
    "scripts": {
      "build": "npm install && grunt"
    }
    

    运行npm run build会先安装devDependencies中定义的一些模块,然后再运行npm install和grunt。

    • 支持生命周期钩子
      npm支持pre- 和 post-两种钩子,前者是在脚本运行前,后者是在脚本运行后执行。所有的命令脚本都可以使用钩子(包括自定义的脚本)。
      比如运行npm run build,会按以下顺序执行:
      npm run prebuild -> npm run build -> npm run postbuild
    • npm提供了一些针对当前包的内置命令,并设置相关的默认行为。这些默认行为可以在scripts中改写其行为。
      相关的内置命令有:
      npm start: npm run start的简写,如果不在script中配置start,那么npm start默认执行node server.js
      npm stop: npm run stop的简写,执行自定义stop脚本,没有默认行为。
      npm restart: npm run stop&&npm run restart&&npm run start的简写。
      npm test ,npm run test的简写,执行自定义test脚本,没有默认行为。
  • 相关阅读:
    使用StreamHttpResponse和FileResponse下载文件的注意事项及文件私有化
    Django中@login_required用法简介
    Django之template
    单链表反转的原理和python代码实现
    两个队列实现栈,两个栈实现队列
    Linux--5 mariadb和redis的安装
    Linux--4
    Linux--3
    Linux--2 Linux之文档与目录结构、shell基本命令
    Linux--1 初识
  • 原文地址:https://www.cnblogs.com/studynote/p/11866682.html
Copyright © 2020-2023  润新知