evitando ../../../../../../ ..
No todo en una aplicación pertenece adecuadamente al npm público y la sobrecarga de configurar un npm privado o un repositorio de git sigue siendo bastante grande en muchos casos. Aquí hay algunos enfoques para evitar el
../../../../../../../
problema de las rutas relativas.
nodo_módulos
Las personas a veces se oponen a colocar módulos específicos de la aplicación en node_modules porque no es obvio cómo registrar sus módulos internos sin también registrar los módulos de terceros desde npm.
¡La respuesta es bastante simple! Si tiene un .gitignore
archivo que ignora node_modules
:
node_modules
Simplemente puede agregar una excepción con !
cada uno de sus módulos de aplicación internos:
node_modules/*
!node_modules/foo
!node_modules/bar
Tenga en cuenta que no puede ignorar un subdirectorio, si el padre ya se ignora. Entonces, en lugar de ignorar node_modules
, debe ignorar cada directorio dentro node_modules
con el
node_modules/*
truco, y luego puede agregar sus excepciones.
Ahora, en cualquier lugar de su aplicación, podrá require('foo')
o require('bar')
no tener una ruta relativa muy grande y frágil.
Si tiene muchos módulos y desea mantenerlos más separados de los módulos de terceros instalados por npm, puede colocarlos todos en un directorio node_modules
como node_modules/app
:
node_modules/app/foo
node_modules/app/bar
Ahora podrá require('app/foo')
o require('app/bar')
desde cualquier lugar de su aplicación.
En su .gitignore
, simplemente agregue una excepción para node_modules/app
:
node_modules/*
!node_modules/app
Si su aplicación tenía transformaciones configuradas en package.json, deberá crear un package.json separado con su propio campo de transformación en su directorio node_modules/foo
o node_modules/app/foo
componente porque las transformaciones no se aplican a través de los límites del módulo. Esto hará que sus módulos sean más robustos frente a los cambios de configuración en su aplicación y será más fácil reutilizar de forma independiente los paquetes fuera de su aplicación.
enlace simbólico
Otro truco útil si está trabajando en una aplicación en la que puede crear enlaces simbólicos y no necesita admitir ventanas es vincular una lib/
o una app/
carpeta node_modules
. Desde la raíz del proyecto, haga:
ln -s ../lib node_modules/app
y ahora desde cualquier parte de su proyecto podrá solicitar archivos lib/
haciendo require('app/foo.js')
para obtener lib/foo.js
.
caminos personalizados
Es posible que vea algunos lugares que hablan sobre el uso de la $NODE_PATH
variable de entorno o opts.paths
para agregar directorios para el nodo y browserify para buscar módulos.
A diferencia de la mayoría de las otras plataformas, el uso de una matriz de directorios de ruta con estilo de shell $NODE_PATH
no es tan favorable en el nodo en comparación con el uso efectivo del node_modules
directorio.
Esto se debe a que su aplicación está más estrechamente acoplada a una configuración de entorno de tiempo de ejecución, por lo que hay más partes móviles y su aplicación solo funcionará cuando su entorno esté configurado correctamente.
node y browserify son compatibles pero desalientan el uso de
$NODE_PATH
.