После того, как npm читает package.json, что запускает Electron? - PullRequest
2 голосов
/ 12 марта 2019

Я только начинаю узнавать о том, как работают JavaScript, HTML и Electron, и я хочу узнать, что запускается electron . в «скриптах» -> «запуск» package.json, потому что я могу 'Я не могу сказать, что делает, и такое волшебство заставляет меня нервничать.

Согласно справочным страницам для npm, npm start делает то, что читает package.json, смотрит на сценарий в разделе "сценарии""->" Пуск "-> some_script, а затем запускается some_script.Иногда some_script - это что-то вроде node foobar.js, что имеет смысл для меня, поскольку я могу запустить его из командной строки.NodeJS выполняет foobar.js.Тем не менее, в случае electron-api-demos, some_script равен electron .

Вы можете загрузить и запустить electron-api-demos через

git clone https://github.com/electron/electron-api-demos
cd electron-api-demos/
npm install && npm start

Чтобы попытаться выяснить, чтоработает electron ., я запустил его в оболочке node, и я попытался запустить node main.js.Я даже попытался открыть оболочку node и запустить

electron-api-demos@2.0.2 start $DIR/electron-api-demos
electron .

(что в точности равно выводу npm start).Никто из них не работал, потому что никто из них не запустил приложение Электрон.На данный момент я очень озадачен тем, как именно запускается скрипт запуска.

Поэтому я предполагаю, что мой вопрос: существует ли команда (которую я могу использовать в командной строке) длязапустить приложение Electron, не используя npm?Если нет, то что npm звонит, чтобы запустить это приложение Electron?

Я прошу прощения, если этот вопрос задавался ранее, но я, кажется, что все источники, которые я нашел, не вдавались в подробности очто именно делается при запуске npm start и как он выполняется electron ..Спасибо за ваше время!

Ответы [ 2 ]

3 голосов
/ 12 марта 2019

Интерфейсы командной строки, установленные с помощью npm, помещаются в каталог node_modules/.bin/.Вы не можете просто запустить их из командной строки, потому что этот каталог отсутствует в вашем PATH (если вы не поместили его туда или не установили глобально).

Итак, если вы хотите запустить электронбез npm start вы можете запустить ./node_modules/.bin/electron ..Поскольку это немного многословно, более новые версии npm предоставляют команду npx для запуска без части ./node_modules/.bin/, поэтому npx electron . также работает.

Поскольку сценарии npm часто используют пакеты, которые выПосле установки они автоматически добавляют node_modules/.bin/ к PATH перед выполнением команды.В результате стартовый скрипт может просто ссылаться на электрон напрямую.

npx может делать и другие интересные вещи - у npm есть сообщение в блоге об этом.

2 голосов
/ 12 марта 2019

Когда вы запускаете npm start , по умолчанию запускается команда, соответствующая ключу «start» script свойству package.json, например

"script":{
   "start": "ng serve",
    "launch":"electron main.js" or "electron ."  // main.js located in the same dir
     "test": " ng test" 
 }

то же самое при запуске npm run launch запускает команду, соответствующую ключу "launch" свойства script файла package.json. например, запустите команду Electron main.js , и ваше приложение будет запущено.

, так что если вы хотите запустить ваше электронное приложение напрямую, например Electron Main.js , то установите глобальный электронный модуль с помощью команды npm install electronic -g , затем просто запустите Electron Main.js и ваше приложение запустится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...