93 votes

Comment partager du code entre des applications node.js ?

J'ai plusieurs applications dans node qui partagent toutes quelques modules que j'ai écrits. Ces modules ne sont pas disponibles via npm. J'aimerais pouvoir partager librement entre les applications, mais je ne veux pas copier les répertoires, ni compter sur Git pour le faire. Et je ne suis pas non plus très favorable à l'utilisation de liens symboliques pour ce faire.

J'aimerais organiser les répertoires de la manière suivante :

app1
 server.js
 node_modules
  (public modules from npm needed for app1)
 lib
  (my own modules specific to app1)

app2
 server.js
 node_modules
  (public modules from npm needed for app2)
 lib
  (my own modules specific to app2)

shared_lib
 (my own modules that are used in both app1 and app2)

Le problème que je rencontre est que les modules dans shared_lib semblent ne pas savoir où trouver les modules qui seront dans le répertoire node_modules de l'application dans laquelle ils s'exécutent. Du moins, je pense que c'est le problème.

Alors.... quelle est la bonne façon de faire cela en évitant d'avoir des doublons de fichiers ? (notez que je ne me soucie pas des doublons de choses dans node_modules, puisque ce n'est pas mon code, je ne les enregistre pas dans Git, etc).

0voto

Farhad Points 61

Une autre solution consiste à cloner les fichiers des autres endroits dans ce repo :

clone.js :

const path = require('path')
const fs = require('fs')

const shared = [
  {
    type: 'file',
    source: '../app1',
    files: [
      'src/file1',
      'src/file2',
      '...'
    ],
  },
]

function cloneFiles(source, files) {
  const Reset = '\x1b[0m'
  const FgGreen = '\x1b[32m'
  console.log(`---------- Cloning ${files.length} files from ${source} ----------`)

  for (const file of files) {
    const sourceFile = path.join(__dirname, '..', source, file)
    const targetFile = path.join(__dirname, '..', file)

    process.stdout.write(`

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X