Przeprowadziłem już sporo poszukiwań. Jednak nadal mam wątpliwości co do głównego parametru w package.json z Node.js.
- W jaki sposób wypełnienie tego pola może pomóc? Pytając w inny sposób, czy mogę uruchomić moduł w innym stylu, jeśli to pole przedstawia?
- Czy w głównym parametrze można wypełnić więcej niż jeden skrypt? Jeśli tak, czy zostałyby rozpoczęte jako dwa wątki? Jeśli nie, jak mogę uruchomić dwa skrypty w module i uruchomić je równolegle?
Wiem, że drugie pytanie jest dość dziwne. Dzieje się tak, ponieważ hostowałem aplikację Node.js w OpenShift, ale aplikacja składa się z dwóch głównych komponentów. Jeden to REST API, a drugi to usługa dostarczania powiadomień.
Obawiam się, że proces dostarczania powiadomień zablokowałby REST API, gdyby zostały zaimplementowane jako jeden wątek. Muszą jednak łączyć się z tą samą kasetą MongoDB. Ponadto chciałbym zaoszczędzić jeden bieg, jeśli oba komponenty mogłyby pracować na tym samym biegu, jeśli to możliwe.
Wszelkie sugestie są mile widziane.
electron
honoruje główne parametry, czylielectron .
zostanie uruchomiony uszne z podkatalogu, czy istnieje na przykład"main": "dist/app/index.js",
wpackage.json
(może uznać za prawdziwe dla innych platform / ram, jak również).You can't have two scripts as main...
- prawda. Jeśli jednak zdarzy się, że Twój pakiet zawiera na przykład wiele poleceń CLI (podczas programowania dostępnych pod./node_modules/.bin/<symlink>
), sprawdź parametr „bin” ..js
tutaj rozszerzeń, ale „identyfikatory modułów” nie mają rozszerzeń. Nie podoba mi się dwuznaczność, której powinniśmy używaćOdpowiadając na pierwsze pytanie, sposób ładowania modułu zależy od punktu wejścia modułu i głównego parametru pliku package.json .
Załóżmy, że masz następującą strukturę plików:
Bez głównego parametru w package.json , trzeba załadować moduł dając punkt wejścia modułu:
require('my-npm-module/lib/module.js')
.Jeśli ustawisz package.json główny parametr w następujący sposób
"main": "lib/module.js"
, będzie można załadować moduł ten sposób:require('my-npm-module')
.źródło
Jeśli masz na przykład w swoim
package.json
pliku:lib/entry.js
będzie głównym punktem wejścia do twojego pakietu.Dzwoniąc
w węźle
lib/entry.js
będzie właściwy plik, który jest wymagany.źródło
Jedną z ważnych funkcji
main
klucza jest to, że zapewnia ścieżkę do punktu wejścia. Jest to bardzo pomocne podczas pracy znodemon
. Jeśli pracujesz znodemon
i zdefiniujeszmain
klucz w swoim,package.json
powiedzmy"main": "./src/server/app.js"
, możesz po prostu podkręcić serwer, wpisującnodemon
CLI z rootem jako pwd zamiastnodemon ./src/server/app.js
.źródło
O ile wiem, jest to główny punkt wejścia do pakietu węzłów (biblioteki) dla npm. Jest to potrzebne tylko wtedy, gdy projekt npm staje się pakietem węzłów (biblioteką), które mogą być instalowane przez npm przez innych.
Powiedzmy, że masz bibliotekę z folderem build /, dist / lub lib /. W tym folderze masz następujący skompilowany plik dla swojej biblioteki:
Następnie w pliku package.json powiesz npm, jak uzyskać dostęp do biblioteki (pakiet węzłów):
Po zainstalowaniu pakietu węzła z KMP do projektu JS, można importować funkcjonalności z dołączonym bundle.js pliku:
Odnosi się to również do korzystania z dzielenia kodu (np. Webpack) w bibliotece. Na przykład ten plik webpack.config.js wykorzystuje kod, który dzieli projekt na wiele pakietów zamiast jednego.
Mimo to możesz zdefiniować jeden główny punkt wejścia do swojej biblioteki w swoim package.json :
Następnie korzystając z biblioteki, możesz importować pliki z głównego punktu wejścia:
Możesz jednak ominąć główny punkt wejścia z pliku package.json i zaimportować podzielone pakiety kodu:
W końcu główna właściwość w pliku package.json wskazuje tylko na główny plik punktu wejścia w bibliotece.
źródło
Dla OpenShift, można dostać tylko jedną parę portu i IP do wiązania (na wniosek). Wygląda na to, że powinieneś móc obsługiwać obie usługi z jednego wystąpienia nodejs, dodając trasy wewnętrzne dla każdego punktu końcowego usługi.
Mam tutaj informacje o tym, jak OpenShift używa pliku package.json twojego projektu do rozpoczęcia aplikacji: https://www.openshift.com/blogs/run-your-nodejs-projects-on-openshift-in-two-simple-steps #package_json
źródło
Potraktuj to tylko jako „punkt wyjścia”.
W sensie programowania obiektowego, powiedzmy C #, jest to init () lub konstruktor klasy obiektów, to właśnie oznaczał „punkt wejścia”.
Na przykład
źródło