Сегодня один коллега объяснил мне, как создавать проекты nodejs, и я замечаю, что в. /node_modules есть невидимая папка с именем.bin. Я должен был сказать, что я обнаружил это после добавления в инструменты "bootcamp" и "bower". Какая цель? Для чего он создан?
Какова цель.bin-папки в node_modules?
Ответ 1
Это папка, в которой находятся двоичные файлы (исполняемые файлы) из ваших узловых модулей.
Исполняемые файлы В глобальном режиме исполняемые файлы связаны с {prefix}/bin в Unix или непосредственно с {prefix} в Windows.
В локальном режиме исполняемые файлы связаны с. /node_modules/.bin, чтобы их можно было сделать доступными для сценариев, запускаемых через npm. (Например, чтобы при запуске теста npm тестовый путь был в пути.)
Ответ 2
В каталоге node_modules/.bin
хранятся двоичные файлы модулей, используемых вашим проектом, обычно с использованием символических ссылок на соответствующие двоичные файлы в соответствующем каталоге модулей. Например, именно так я вижу двоичный standard
из стандарта пакета npm (руководство по стилю JavaScript, linter и formatter)
$ls node_modules/.bin/standard -l
lrwxrwxrwx 1 jfolpf jfolpf 22 jul 17 08:29 standard -> ../standard/bin/cmd.js
Когда я запускаю node_modules/.bin/standard
я действительно запускаю node_modules/standard/bin/cmd.js
из standard
пакета npm. Эта символическая ссылка была создана при установке пакета, то есть при npm install standard
Эти двоичные файлы также позволяют использовать модули непосредственно из сценариев npm. Например, вы, возможно, не установили standard
глобально с npm install standard -g
, что означает, что вы не можете запустить standard
напрямую со своего терминала в главном каталоге вашего модуля.
Но вы можете написать тестовый скрипт npm start или npm, добавив в файл package.json
:
"scripts": {
"start": "standard src/*.js",
"test": "standard src/*.js && node myTest.js"
}
и это совершенно правильно, учитывая, что у вас есть стандарт в качестве зависимости проекта. Даже если модуль не является глобальным и не может использоваться операционной системой напрямую, npm может найти папку bin для заданного standard
имени модуля и запустить скомпилированный двоичный файл. Так что npm запускает такой скрипт:
"start": "node_modules/.bin/standard src/*.js",