La comprensión en profundidad del paquete NPM

El paquete con la NGP

Especificación define el paquete CommonJS es realmente muy simple, se describe por la estructura de archivo de paquete y las dos partes, los antiguos archivos para varios paquete de tejido, este último se utiliza para describir paquete de información para lectura externo teniendo análisis.

estructura de paquetes

El paquete es en realidad un archivo, un directorio que se empaqueta directamente como formato .zip o tar.gz, la descompresión después de la instalación se reduce al directorio. directorio del paquete CommonJS el pleno cumplimiento de las especificaciones debe contener los siguientes archivos.

  1. package.json: paquete de archivo de descripción.
  2. bin: directorio de los archivos binarios ejecutables.
  3. lib: directorio de código JavaScript para almacenar.
  4. doc: el directorio utilizado para almacenar los documentos.
  5. Prueba: medios para almacenar el código de prueba.

Se puede ver, especificación del paquete CommonJS en términos de documentación, pruebas, etc. se realizan teniendo en cuenta. Cuando hecha pública después de que se complete un paquete, el usuario puede ver la unidad de pruebas y documentación, que da a la gente un sentido de práctica y fiable.

archivo de descripción del paquete

Paquete de archivos de descripción para la expresión de la información no relacionada con el mismo código es un --package.json archivo de formato JSON, que se encuentra en el directorio raíz del paquete, que es una parte importante del paquete. Y todos los actos están relacionados estrechamente campo de la NGP archivos de descripción de paquete.

CommonJS debe definir el archivo de campo package.json.

  1. Nombre: el nombre del paquete. Se requiere define la especificación de la composición de los caracteres en minúsculas y números, puede contener \ _ y -, pero los espacios no están permitidos. Nombre del paquete debe ser único con el fin de evitar malos entendidos de la misma conflicto de nombres cuando se anunció. Además, la NGP también recomienda no incidentales a los js nodos o repetición indican que se trata de un módulo JavaScript o nodo en el nombre del paquete.
  2. Descripción: Introducción paquete.
  3. Versión: número de versión.
  4. palabras clave: Palabras clave matriz, la NGP se utiliza principalmente para la búsqueda de la clasificación. Un buen usuarios gama de palabras clave ayuda a encontrar rápidamente el paquete se escribe.
  5. mantenedores: lista mantenedor del paquete, cada uno de los mantenedor por el nombre, correo electrónico e Internet tres atributos.

NGP lleva a cabo por la propiedad de la autoridad de certificación.

  1. contribuctors: una lista de contribuyentes.
  2. insectos: una lata de dirección de la página de retroalimentación de errores o la dirección de correo electrónico.
  3. licencias: una lista de la licencia actual utilizado por el paquete, lo que indica que los usos del paquete en el que una licencia.
  4. repositorios de alojamiento: el código fuente de una lista de ubicaciones para indicar en qué dirección y la dirección del código fuente se puede acceder a través del paquete.
  5. Dependencias: Lista de paquetes utilizando el paquete actual depende. Esta propiedad es muy importante, la NGP se carga automáticamente el paquete utilizando esta propiedad.

Además de campo obligatorio, la especificación también define parte de un campo opcional

  1. Inicio: dirección del sitio web del paquete actual.

  2. OS: una lista de sistemas operativos compatibles. El valor de estos sistemas operativos incluyen AIX, FreeBSD, Linux, MacOS, Solaris, VxWorks, ventanas. Si la lista de configuración está vacía, sin sistema operativo para hacer ninguna suposición.

  3. CPU: lista de soporte de la arquitectura de la CPU.

  4. del motor: Apoyado js lista motor, una lista de valores válidos incluyen ejs motor, Flusspferd, gpsee, JSC, spidermonkey, narwhal, nodo, V8.

  5. incorporado: bandera de si el paquete actual está integrado en el componente estándar en el sistema subyacente.

  6. directorios: Paquete Descripción de catálogo.

  7. implementos: logro de una lista estandarizada, marcan el actual paquete que implementa la especificación CommonJS.

  8. guiones: Descripción de la escritura del objeto. Se utiliza principalmente para instalar el gestor de paquetes, compilar, probar y descarga de paquetes, proporcionando un mecanismo de gancho.

    //示例如下:
    "scripts":{
    	"install":"install.js",
    	"uninstall":"uninstall.js",
    	"build":"build.js",
    	"test":"test.js"
    }
    

Definir especificación del paquete puede ayudar a resolver el problema del nodo dependencias instalado, mientras que la NGP se basa en la aplicación de especificaciones. Inicialmente, las herramientas de la NGP están ahí crear Issac Z.Schlueter una por separado, a condición de que los servicios de nodo del nodo Administrador de paquetes, es necesario instalar por separado. Más tarde, cuando se integran en la versión v6.3 de nodo como el gestor de paquetes por defecto, como parte del paquete de instalación en conjunto.

Se describe en el archivo de especificación en el paquete, la NGP campo real necesita sobre todo nombre, versión, descripción, palabras clave, repositorios, autor, bin, principales, scripts, los motores, las dependencias, devDependencies.

La diferencia entre la especificación de paquetes es más autor, bin, principales y devDependencies cuatro campos.

autor: los autores del paquete.

bin: Algunos autores paquete esperanza de que el paquete se puede utilizar como una herramienta de línea de comandos. Después de configurar el campo bin, por npm install package_name -gse pueden añadir a la ruta de ejecución de comandos secuencia de comandos, a continuación, puede ejecutar directamente en la línea de comandos. -G módulo de comando mediante el montaje del paquete llamado modelo global.

principal: Método de introducción módulo requiere () cuando se introduce en el paquete, comprueba el campo de prioridad, y que los módulos restantes de la entrada de paquete. Si no existe el campo, require () busca método index.js en el directorio del paquete, index.node, archivo index.json como la entrada por defecto.

devDependencies: Algunos módulos sólo tienen que confiar en el desarrollo. Este atributo de configuración, el desarrollador se le puede indicar posteriores dependencias del paquete de instalación.

//以下是node比较有名的框架express项目的package.json文件
{
  "name": "express",
  "description": "Fast, unopinionated, minimalist web framework",
  "version": "4.17.1",
  "author": "TJ Holowaychuk <[email protected]>",
  "contributors": [
    "Aaron Heckmann <[email protected]>",
    "Ciaran Jessup <[email protected]>",
    "Douglas Christopher Wilson <[email protected]>",
    "Guillermo Rauch <[email protected]>",
    "Jonathan Ong <[email protected]>",
    "Roman Shtylman <[email protected]>",
    "Young Jae Sim <[email protected]>"
  ],
  "license": "MIT",
  "repository": "expressjs/express",
  "homepage": "http://expressjs.com/",
  "keywords": [
    "express",
    "framework",
    "sinatra",
    "web",
    "rest",
    "restful",
    "router",
    "app",
    "api"
  ],
  "dependencies": {
    "accepts": "~1.3.7",
    "array-flatten": "1.1.1",
    "body-parser": "1.19.0",
    "content-disposition": "0.5.3",
    "content-type": "~1.0.4",
    "cookie": "0.4.0",
    "cookie-signature": "1.0.6",
    "debug": "2.6.9",
    "depd": "~1.1.2",
    "encodeurl": "~1.0.2",
    "escape-html": "~1.0.3",
    "etag": "~1.8.1",
    "finalhandler": "~1.1.2",
    "fresh": "0.5.2",
    "merge-descriptors": "1.0.1",
    "methods": "~1.1.2",
    "on-finished": "~2.3.0",
    "parseurl": "~1.3.3",
    "path-to-regexp": "0.1.7",
    "proxy-addr": "~2.0.5",
    "qs": "6.7.0",
    "range-parser": "~1.2.1",
    "safe-buffer": "5.1.2",
    "send": "0.17.1",
    "serve-static": "1.14.1",
    "setprototypeof": "1.1.1",
    "statuses": "~1.5.0",
    "type-is": "~1.6.18",
    "utils-merge": "1.0.1",
    "vary": "~1.1.2"
  },
  "devDependencies": {
    "after": "0.8.2",
    "connect-redis": "3.4.1",
    "cookie-parser": "~1.4.4",
    "cookie-session": "1.3.3",
    "ejs": "2.6.1",
    "eslint": "2.13.1",
    "express-session": "1.16.1",
    "hbs": "4.0.4",
    "istanbul": "0.4.5",
    "marked": "0.6.2",
    "method-override": "3.0.0",
    "mocha": "5.2.0",
    "morgan": "1.9.1",
    "multiparty": "4.2.1",
    "pbkdf2-password": "1.2.1",
    "should": "13.2.3",
    "supertest": "3.3.0",
    "vhost": "~3.0.2"
  },
  "engines": {
    "node": ">= 0.10.0"
  },
  "files": [
    "LICENSE",
    "History.md",
    "Readme.md",
    "index.js",
    "lib/"
  ],
  "scripts": {
    "lint": "eslint .",
    "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
    "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
    "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
  },
  "__npminstall_done": "Sun Feb 16 2020 11:22:54 GMT+0800 (GMT+08:00)",
  "_from": "[email protected]",
  "_resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz"
}

funciones comunes de la NGP

teoría paquete Especificación CommonJS, NPM es una práctica en la que a. Para conocer los términos de nodos, la NGP ayudar a completar la liberación, la instalación y se basan en módulos de terceros y así sucesivamente. Por NPM, un pozo se forma entre el nodo y el módulo ecosistema de terceros.

dependencias de instalación

dependencias de instalación son el uso más común de la NGP, su declaración de ejecución es NPM instalar expreso .. Después de ejecutar el comando, la NGP se crea en el directorio directorio node_module actual, a continuación, crear un directorio en el directorio expreso node_module, luego descomprimirlo en este directorio.

Después de dependencias de instalación, llame directamente al código de require ( 'expresar'), se puede introducir en la bolsa, el método require () de análisis se llevará a cabo a través de la ruta, encontrar una ruta a la ubicación del módulo en el que la expresa. Introducción y paquetes de instalación de módulos son complementarios.

Instalación modo global

Si contiene una herramienta de línea de comandos, es necesario ejecutar npm install express -gcomandos instalados en todo el mundo. Cabe señalar que el patrón general no va a instalar un paquete del módulo en el sentido de un paquete global, no significa que se puede consultar desde cualquier parte a través de require () a la misma.

Modo global Este título no hace realmente exacto, hay muchos engañosa. De hecho, -g un paquete se instala como comandos ejecutables disponibles a nivel mundial. Describió el paquete de acuerdo con el campo bin del archivo de configuración, un enlace al script ejecutable real bajo el mismo camino de nodo:

"bin":{
	"express":"./bin/express"
}

De hecho, todos los módulos se han instalado instalación en modo mundial en un directorio unificado, el directorio puede estar fuera de operación por:

path.resolve (process.execPath, '...', 'lib', 'node_modules');

Si la posición del archivo ejecutable de nodo es / usuario / / bin locales / nodo, entonces el directorio de módulos es / usuario / / lib / node_modules locales. Por último, a modo de la configuración suave bin Campo de enlace de los enlaces a archivos ejecutables al siguiente directorio de la aplicación de Nodo.

La instalación de un local

Para algunos paquetes no entregados a la NGP, o debido a que los motivos de la red no pueden ser instalados directamente paquete, el paquete puede ser descargado a nivel local, y la instalación local. Package.json instalación local sólo necesita especificar el archivo donde al puesto de APN puede: Puede ser un archivo comprimido que contiene package.json, puede ser una dirección URL, también puede tener lugar package.json directorio de archivos del directorio siguiente . Los parámetros específicos son los siguientes:

npm install <tarbar file>
npm install <tarbar url>
npm install <folder>
Instalación de fuentes no oficiales

Si no puede instalar las fuentes oficiales, se puede instalar mediante la duplicación. En la ejecución de comandos, añadir --registry=http://registry.urla, ejemplos:

npm insatll underscore --registry=http://registry.yrl

Si el proceso de instalación es casi un espejo fuente utilizada, un comando ejecutable especifica la fuente por defecto

npm config set registry http://registry.url

problemas potenciales de la NGP

Como una herramienta para los servicios del módulo y de paquetes, la NGP es muy conveniente. Se trata esencialmente de un paquete ya plataforma compartida, todo el mundo puede contribuir y empaquetarlos para compartir esta plataforma, se puede utilizar de forma gratuita con un permiso de licencia

Publicado 27 artículos originales · ganado elogios 5 · Vistas 6110

Supongo que te gusta

Origin blog.csdn.net/systempause/article/details/104358449
Recomendado
Clasificación