web-dev-qa-db-fra.com

NPM ne crée pas de répertoire .bin

J'utilise npm v1.4.4 et noeud v0.10.25 on Mac OS X 10.9.2 .

J'ai récemment mis à niveau les noeuds et npm, et npm install ne crée plus le répertoire .bin dans node_modules.

J'ai supprimé node_modules, essayé npm install à nouveau, mais le répertoire et les fichiers binaires ne sont jamais créés.

Quelqu'un a-t-il une idée de la raison pour laquelle cela se produit?

Voici mon package.json:

{
  "name": "redacted",
  "author": {},
  "description": "redacted",
  "dependencies": {
  },
  "devDependencies": {
    "karma": "*",
    "karma-coverage": "0.1.2",
    "karma-junit-reporter": "*",
    "karma-coffee-preprocessor": "~0.1",
    "grunt": "^0.4.2",
    "grunt-contrib-requirejs": "^0.4.3",
    "grunt-contrib-concat": "^0.3.0",
    "grunt-contrib-sass": "^0.7.2",
    "grunt-contrib-htmlmin": "^0.2.0",
    "grunt-contrib-cssmin": "^0.7.0",
    "grunt-contrib-coffee": "^0.10.1",
    "grunt-contrib-uglify": "^0.3.3",
    "grunt-contrib-jst": "^0.5.1",
    "grunt-contrib-qunit": "^0.4.0",
    "grunt-contrib-jshint": "^0.8.0",
    "grunt-contrib-watch": "^0.5.3",
    "grunt-contrib-jasmine": "^0.6.1",
    "grunt-contrib-compress": "^0.6.1",
    "grunt-contrib-handlebars": "^0.6.1",
    "grunt-contrib-less": "^0.9.0",
    "grunt-contrib": "^0.9.0"
  }
}
19
Gaz

Cela semble être un bug, voir # 4851 .

2
jgillich

Le répertoire ./node_modules/.bin est l'endroit où npm crée des liens vers le fichier binaire d'un package de nœud. De https://www.npmjs.org/doc/files/npm-folders.html

Exécutables

En mode global, les exécutables sont liés à {Préfixe}/bin sous Unix ou directement au {préfixe} sous Windows.

En mode local, les exécutables sont liés à ./node_modules/.bin afin que Puisse être rendu disponible pour les scripts exécutés via npm. (Par exemple, pour qu'un testeur soit dans le chemin lorsque vous exécutez npm Test.)


Le package.json que vous avez collé ci-dessus n'a pas de section bin. Jetez un oeil à cet exemple à partir de npm 's package.json

{
  "version": "1.4.9",
  "name": "npm",
  "publishConfig": {
    "proprietary-attribs": false
  },
  "description": "A package manager for node",
  ...
  ...
  "main": "./lib/npm.js",
  "bin": "./bin/npm-cli.js",
  "dependencies": {
    "abbrev": "~1.0.4",
    "ansi": "~0.2.1",
    ...
    ...

Plus précisément, la ligne "bin": "./bin/npm-cli.js" indiquera à npm de créer un lien entre ./node_modules/.bin/npm et node_modules/npm/npm-cli.js.

1
Hanxue

Dans mon cas, webpack fonctionnait en mode veille dans une autre fenêtre de la console. Je n'ai pas eu d'erreur pendant le npm install, donc ça m'a pris un moment pour le remarquer.

  1. Assurez-vous que les dépendances ne sont pas utilisées, telles que karma tests en cours ou webpack en mode veille.
  2. Supprimez les dossiers de dépendance, tels que node_modules/karma, ou le dossier entier node_modules. NPM ne semble pas créer de fichiers lien symbolique dans le dossier .bin si le dossier de dépendance existe déjà.
  3. Réessayer npm install

Avec NPM 6.7.0.

0
angularsen

Il semble que toutes vos dépendances soient dev dépendances. Pouvez-vous voir si votre variable d'environnement NODE_ENV est définie sur production maintenant? Si oui, vous devrez le changer.

En outre, une erreur est-elle survenue pendant l'installation?

0
saladinxu

Cela pourrait arriver à cause du npm cassé. Essayez de suivre la commande de npm, dépannage et cela devrait fonctionner correctement.

curl -L https://www.npmjs.org/install.sh | sh
0
samarth