Відповіді:
Ви можете скористатися --prefix
опцією:
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
Потім пакет (и) буде встановлено в ./install/here/node_modules
. mkdir
Необхідно , так НПМ може інакше вибрати вже існуючий node_modules
каталог вище в ієрархії. (Дивіться документацію npm на папки .)
npm install
(без назви пакета)? Я надумав це безпосередньо, але потім npm шукає package.json
в {prefix}
. Те, що я також прагну - це вміти пускати packages.json
в корінь проекту і одночасно встановлювати всі пакети в {project root}/{project webroot}
.
npm install
, але --prefix
здається, що приємніше рішення, якщо воно не викликало рекурсії.
У документації зазначено: Використовуйте опцію префікса разом із глобальним параметром :
Префікс конфиг по замовчуванням в тому місці , де встановлено вузол. У більшості систем це / usr / local . У Windows це саме місце розташування двійкового файлу node.exe. У системах Unix це рівень на один рівень, оскільки вузол зазвичай встановлюється на {prefix} / bin / node, а не на {prefix} /node.exe .
Коли встановлено глобальний прапор, npm встановлює речі в цей префікс. Якщо його не встановлено, він використовує корінь поточного пакету або поточну робочу директорію, якщо вона вже не є.
(Наголос на них)
Тож у вашому кореневому каталозі ви могли б встановити
npm install --prefix <path/to/prefix_folder> -g
і він встановить node_modules
папку в папку
<path/to/prefix_folder>/lib/node_modules
require
встановити пакети в усьому світі, чи не так?
Станом на npm версії 3.8.6 ви можете використовувати
npm install --prefix ./install/here <package>
встановити у вказаному каталозі. NPM автоматично створює node_modules
папку навіть тоді, коли node_modules
каталог вже існує у вищій ієрархії. Ви також можете мати package.json
в поточному каталозі, а потім встановити його у вказаному каталозі, використовуючи --prefix
опцію:
npm install --prefix ./install/here
Станом на npm 6.0.0, ви можете використовувати
npm install --prefix ./install/here ./
встановити package.json у поточному каталозі до каталогу "./install/here". Є одне, що я помітив на Mac, що він створює симпосилання на батьківську папку всередині каталогу node_modules. Але, це все одно працює.
ПРИМІТКА: NPM шанує шлях, який ви вказали через --prefix
опцію. Він вирішується згідно документації на npm для папок , лише коли npm install
використовується без цього --prefix
параметра.
Can't install <current directory>: Missing package name
package.json
файл./install/here