Как использовать ссылку npm для запуска пакета с экспресс-сервером? - PullRequest
0 голосов
/ 26 мая 2018

В настоящее время я разрабатываю пакет NPM, который запускает экспресс-сервер для размещения изображений.Он существует в каталоге в проекте Laravel.

В настоящее время он все еще находится в разработке, и я хочу превратить его в публикуемый модуль, поэтому я добавил .gitignore для этого пакета в свой проект Laravel.

В моем пакете NPM я запускал npm link, а в моем проекте Laravel я запускал npm link imageserver, imageserver , являющийся именем моего пакета.Это гарантирует, что я смогу разработать свой пакет без необходимости постоянно публиковать и вносить новые изменения с помощью NPM.

Теперь мне может потребоваться пакет внутри моего JavaScript с оператором require(), но я просто хочу запуститьсервер экспресс, который является этим пакетом через сценарии npm.

В пакете imageserver я настроил package.json, содержащий это:

"scripts": {
  "start": "nodemon app.js"
}

Как я могу позвонитьсценарий npm run start для пакета, который я связал?

В моем проекте Laravel я просто хотел бы запустить свой связанный серверный пакет следующим образом:

"scripts": {
    "start": "imageserver"
}

Но в этом случае яполучаю:

imageserver: не найдено

Обычно вы можете нормально запускать пакеты из сценариев NPM, если они установлены в вашем каталоге node_modules.Разве это не относится к связанным пакетам?

Редактировать

Я добавил свойство bin в мой файл package.json, чтобы сделать его исполняемым и добавить его вмой глобальный путь.По крайней мере, таким образом я могу вызвать imageserver из моих сценариев NPM, и это работает.Теперь я получаю ошибки разрешения, хотя:

//: Permission denied
/home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: 2: /home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: global.__base: not found
/home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: 4: /home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: //: Permission denied
/home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: 5: /home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: Syntax error: "(" unexpected

1 Ответ

0 голосов
/ 26 мая 2018

Я сделал мой основной файл JavaScript в моем исполняемом файле imageserver и добавил в своем каталоге шебанг:

.

chmod +x filename.sh

В моем файле.

#!/usr/bin/env node

Мой package.json для пакета imageserver теперь имеет следующее значение:

"bin": "app.js",

Когда я запустил npm link, он добавил imageserver в качестве исполняемого файла к моему пути, и я могу выполнить его каксторонний пакет из scripts раздела проекта, которому он нужен.

Теперь он работает, в настоящее время он больше не контролируется nodemon, мне просто нужно выяснить, как заставить это работать снова.

...