7

J'essaie actuellement de migrer un ancien projet ASP.NET WebSite vers Visual Studio 2015. Je souhaite utiliser NPM/Gulp pour compiler automatiquement les fichiers LESS en CSS (cette tâche a été effectuée par WebEssentials dans VS 2013). J'ai ajouté un fichier package.json au projet pour charger les composants requis. Cela crée un dossier node_modules dans la racine du projet WebSite, et c'est où mon problème commence:Modifier l'emplacement du dossier node_modules

Comme les projets WebSite n'ont pas un fichier de projet, tous les fichiers (et sous-répertoires) trouvés dans le dossier racine du projet , font automatiquement partie du projet. En raison de la structure de répertoire profondément imbriquée à l'intérieur node_modules, cela conduit à des erreurs en raison de noms de chemin trop longs.

Une solution de contournement consiste à définir l'attribut hidden sur le dossier node_modules (mais cela doit être fait manuellement par chaque développeur).

Existe-t-il un moyen de dire à NPM de placer les modules de noeud dans un autre répertoire, par ex. un niveau au-dessus du projet (..\node_modules) où se trouve le fichier de solution?

Ou est-il possible de définir l'attribut caché sur un dossier à partir d'une tâche-gulp (qui s'exécute lorsque le projet est chargé)?

+0

Vous pouvez aborder le problème dans l'autre sens. Créez votre site Web racine dans un emplacement différent, et utilisez gulp pour compiler les sources et les écrire dans votre dossier de site Web (ie 'public') puis exécutez npm/gulp depuis votre répertoire de solution, et laissez votre point d'entrée de votre site Web pointer vers le dossier public. – Rik

+0

@Rik: Je ne suis pas sûr que ce soit possible avec un projet ASP.NET * WebSite *, mais j'y penserai. Aussi, si possible, je préfère ne pas faire trop de changements à ce vieux projet. – M4N

+0

Mais vous ajoutez les fichiers npm quelque part. Choisissez n'importe quel emplacement qui ne se trouve pas dans votre dossier de site Web et utilisez 'gulp.src(). pipe (dostuff) .gulp.dest (chemin/vers/site/répertoire)' à partir de là. Avec gulp.dest() vous pouvez copier les fichiers à n'importe quel endroit. N'a pas besoin de changements structurels. – Rik

Répondre

1

Basé sur @ réponse de Rik, j'ai pu résoudre le problème:

Au lieu d'ajouter la package.json et gulpfile.js dans le projet WebSite, je les ai ajoutés au niveau de la solution (comme éléments de solution). Cela signifie que le dossier node_modules se trouve maintenant dans le répertoire de la solution au même niveau que le ou les projets WebSite.

Le seul autre changement consistait à modifier les chemins en gulpfile.js en conséquence.

1

Vous voudrez peut-être vérifier npm 3.0+. Il installe les modules dans une structure à plat maximum. Cela devrait réduire les longueurs de chemins dans le répertoire du module.

Depuis la sortie note

plat, plat, plat!

Vos dépendances vont maintenant être installées au maximum à plat. Dans la mesure où cela est possible, toutes vos dépendances, et leurs dépendances, et leurs dépendances seront installées dans le dossier node_modules de votre projet sans imbrication. Vous ne verrez que les modules imbriqués les uns sous les autres lorsque deux modules (ou plus) ont des dépendances conflictuelles.

  • # 3697 Cela devrait éliminer la plupart des cas où les utilisateurs de Windows se sont retrouvés avec des chemins trop longues pour Explorer et d'autres
    outils standard pour traiter.
  • # 6912 (# 4761 # 4037) Cela signifie également que vos installations seront déduitées dès le départ.
  • # 5827 Cette déduplication s'étend même aux débits git.
  • # 6936 (# 5698) Diverses commandes sont dédupliquées maintenant.

Cela a des répercussions sur le comportement des autres commandes:

  • désinstallation NPM supprime toutes les dépendances du module que vous avez spécifié qui ne sont pas requis par tout autre module. Auparavant, il
    ne supprimerait que ceux qui ont été installés en vertu de cela,
    résultant de gauche au-dessus de vilain si vous aviez déjà déduit. Npm ls vous montre maintenant votre arbre de dépendance organisé autour de ce qui nécessite quoi, plutôt que d'où ces modules sont sur le disque.
  • # 6937 La déduplication de npm aplatit maintenant l'arbre en plus de la déduplication.

https://github.com/npm/npm/releases/tag/v3.0.0

Pour la mise à niveau vérifier l'installation de fenêtres sur ce paquet fenêtres NPM-mise à niveau

+0

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. - [À partir de Review] (/ review/low-quality-posts/10565078) –

+0

Ajouté plus de détails à la réponse –