update mac javascript dependencies node.js bundler npm

javascript - mac - npm version



Usar npm para instalar o actualizar paquetes necesarios como bundler para rubygems (6)

Editar: Esto solo se aplica a las versiones npm <1.0

Fue bastante difícil resolver esto, pero NPM lo hace posible .

Necesitas tres componentes

  1. Un subdirectorio en su repositorio (es decir, deps/ )
  2. Un archivo package.json en el directorio de arriba que enumera dependencias
  3. Un archivo index.js en el directorio anterior que requiere sus dependencias

Ejemplo

Imagine que express es su única dependencia

deps / package.json

nota: Incremente la versión # cada vez que modifique las dependencias

{ "name": "myapp_dependencies", "version": "0.0.1", "engines": { "node": "0.4.1" }, "dependencies":{ "express": "2.0.0beta2" } }

deps / index.js

export.modules = { express: require(''express'') //add more }

Ahora debería poder instalar sus dependencias usando npm. Incluso podría hacer que esta parte de su proceso de implementación

cd deps npm install

Luego, dentro de su código de aplicación puede obtener acceso a su versión específica de express de esta manera:

var express = require(''myapp_dependencies'').express;

Amo a Bundler , es genial en la administración de la dependencia. Me encanta npm , ¡la instalación de paquetes de nodos es fácil! Tengo una aplicación nodejs y me encantaría poder especificar las dependencias de mis aplicaciones e instalarlas / actualizarlas fácilmente cada vez que implemente mi aplicación. Esta no es una biblioteca que estoy lanzando, es una aplicación web hecha y derecha.

npm bundle comando npm bundle , pero parece que simplemente anula el directorio donde están instalados los paquetes.

Estoy acostumbrado a usar bundler de esta manera:

# Gemfile gem "rails", "3.0.3"

Instala rails v3.0.3 y cualquier otra gema requerida en la máquina host solo si aún no existe

> bundle install

¿Cómo puedo lograr algo similar con npm?


A partir de la versión 1.1.2 de Npm, hay un nuevo comando npm shrinkwrap que crea un archivo npm-shrinkwrapped.json , análogo a Gemfile.lock . Es importante crear uno, para evitar que el software se pudra (ver el razonamiento de Bundler ). Particularmente como Nodejs tiene una comunidad tan rápida.

Mientras que la bundle install crea un Gemfile.lock automáticamente, npm install no creará npm-shrinkwrapped.json (pero lo usará cuando exista). Por lo tanto, debe recordar usar npm shrinkwrap .

Lea una guía completa en http://blog.nodejs.org/2012/02/27/managing-node-js-dependencies-with-shrinkwrap/


A partir de npm 1.0 (que ahora es lo que obtienes por defecto si sigues los pasos en el archivo README), "paquete" ya no es una cuestión segregada, es solo "cómo funciona".

Asi que:

  1. Coloque un archivo package.json en la raíz de su proyecto
  2. Lista tus deps en ese archivo

    { "name" : "my-project" , "version" : "1.0.0" , "dependencies" : { "express" : "1.0.0" } }

  3. npm install Dado que está llamando a esto sin args, y no en modo global, simplemente instalará todos sus deps localmente.

  4. require("express") y ser feliz.

Debes leer estos dos artículos del blog de Isaacs (autor npm). Creo que son realmente buenos, y creo que te dicen cómo lograr tu objetivo:

  1. http://blog.izs.me/post/1675072029/10-cool-things-you-probably-didnt-realize-npm-could-do
  2. http://foohack.com/2010/08/intro-to-npm/

Creo que el enlace # 1 (punto # 11) explica esto:

11: agrupe todas sus dependencias en el paquete mismo

Cuando use el comando npm bundle, npm pondrá todas sus dependencias en la carpeta node_modules en su paquete. Pero no se detiene allí.

Si desea depender de algo que no está en el registro, puede hacerlo. Solo haz esto:

npm bundle install http://github.com/whoever/whatever/tarball/master Esto instalará el contenido de ese tarball en el paquete, y luego puede listarlo como una dependencia, y no intentará instalarlo cuando su paquete se instala

Esto también es útil si tiene su propio tenedor de algo, y preferiría no cambiar el nombre.

De hecho, puede ejecutar casi cualquier comando npm en el paquete. Para ver lo que hay adentro, puedes hacer npm bundle ls. Para eliminar algo, haz npm bundle rm thing. Y, por supuesto, puede instalar múltiples versiones y activar la que desee.


Me parece que la solución más simple es usar un archivo package.json con el indicador private (agregado a npm el mes pasado) establecido en true . De esta forma, puede ejecutar npm install o npm bundle para tomar las dependencias de su proyecto, pero evita que alguien publique accidentalmente su proyecto no público.

Aquí hay un ejemplo de package.json :

{ "name": "yourProject" ,"version": "1.0.0" ,"dependencies": { "express" : ">=2.1.0" } ,"private": true }

La ejecución de la npm install express en el sistema local si aún no existe; ejecutar npm publish da un error debido a lo "private": true .

Usted y su equipo pueden usar la etiqueta de versión internamente para rastrear los cambios de dependencia a lo largo del tiempo: cada vez que cambie una dependencia, cambie la versión. Para ver qué versión ha instalado, use npm ls installed .


Publique su aplicación con npm también, y enumere sus dependencias en su archivo package.json.

Cuando alguien usa npm para instalar su paquete, npm se ocupará de resolver sus dependencias.

Especificación de paquetes: http://wiki.commonjs.org/wiki/Packages/1.0