2012-06-12 16 views
15

Chcę zbudować interfejs dla szeregu poleceń terminali używanych przez naszych programistów do zarządzania ich środowiskami programistycznymi. Chciałbym spróbować zbudować go w node.js.Pakuj aplikację Node.js jako aplikację osx

Teraz myślę, że mogę go utworzyć jako aplikację HTML5/CSS3/JS za pomocą ekspresowego itd., A następnie spakować go jako natywną aplikację osx. Oznacza to, że aplikacje, które mogę im wysłać, dwukrotnie klikają i uruchamiają, ale uruchamiają przeglądarkę Chrome i przechodzą do serwera localhost: port, który uruchamia skrypt lub po prostu uruchamia serwer i instruuje użytkownika, aby przejść do adresu URL . Tak czy inaczej jest w porządku.

Robię to, ponieważ potrzebuję dostępu do lokalnego systemu, aby móc skonfigurować wiele rzeczy i współdziałać z dowolną liczbą uruchomionych (bezgłowe maszyny wirtualne). Nie mogę więc po prostu serwować tego z serwera i nie odwiedzać strony.

Wszelkie pomysły?

Dziękuję

Luis

+0

Czy to rzeczywiście musi być pakiet .app? Jeśli nie, może być prostsze tworzenie skryptu powłoki, który wykonuje wszystkie rzeczy uruchomione, i po prostu wywołaj tę funkcję MyApp.command i spakuj ją razem z lokalną kompilacją węzła i źródła wewnątrz pliku zip lub dmg lub cokolwiek innego. Jeśli to musi być .app, najprostsze rozwiązania będą wymagały bezpośredniego uruchomienia skryptu JS, więc będziesz musiał napisać kod js, aby uruchomić przeglądarkę dla użytkownika (nie jest to trudne). Jeśli musi to być plik .app i nie można modyfikować JS, musisz utworzyć niestandardową wrapper .app. Więc czego chcesz? – abarnert

+1

PS, nie ma (jeszcze) pliku node.js odpowiadającego py2app itp., Który bardzo ułatwi rozwiązanie pośrednie. Z tego co rozumiem, http://appjs.org/ jest najbardziej obiecującą opcją w tym momencie, ale obecna wersja nie działa na Macu ... więc nadal będziesz musiał dużo pracować, nawet jeśli pójdziesz z teoretycznie "łatwym" sposobem. – abarnert

+0

PPS, zobacz także https://groups.google.com/group/nodejs/browse_thread/thread/f90b3f1c747d20b3 (chociaż jest to bardziej związane z łączeniem interfejsu GUI WebKit z aplikacją, zamiast uruchamiania domyślnej przeglądarki użytkownika). – abarnert

Odpowiedz

2

Jeśli kompilować ze źródeł node.js każdy plik JavaScript węzłów lib folder zostanie włączone do binarnego. W ten sam sposób można spakować kod do pliku binarnego.

Nie jestem pewien, jak powstają pakiety Mac OSX, ale na końcu nie wygląda na to, że to very hard. Wystarczy spakować swój niestandardowy plik węzłowy do jednego.

3

odjazdu AppJS: http://appjs.com/ - "tworzenie aplikacji Desktop for Linux, Windows i Mac za pomocą HTML, CSS i Javascript"

brzmi jak dobry mecz :)

+3

Na https://twitter.com/appjs/status/394911856910823424 - appjs został zastąpiony przez https://github.com/rogerwang/node-webkit –

7

Opcja 1: electron (aka-powłoka atomowa)

To jest powłoka, której używa edytor Atith githuba. Jest bardzo podobny do webkita, ale najpierw uruchamia skrypt i musisz utworzyć widok/okno dla użytkownika. Są inne drobne różnice, ale warto na nie patrzeć.


Opcja 2: NW.js dawniej węzła WebKit

Istotą jest to, że w zasadzie rozciąga silnik JS, aby napisać aplikację na bazie wspieraniu rozszerzony model obiektowy węzła i moduły ... ty następnie spakuj plik package.json start.html moduły i pliki js do pliku zip (z rozszerzeniem .nw) i uruchom go za pomocą polecenia nw (.exe) .. dostępne są kompilacje okien, mac i linux.


Wariant 3: Thrust (Node Adapter)

To jest naprawdę stracić wiązania wokół WebKit/chrom z IPC kanału do aplikacji wodowania. Możesz użyć kanału wiadomości lub napisać swoją aplikację jako bardziej tradycyjną aplikację po stronie serwera w węźle i sterować uruchomieniem okna. Które może dobrze cię dopasować.

Thrust ma wiązania dla wielu języków. Umieszczam to przed MacGapNode tylko dlatego, że preferuję opcje wieloplatformowe.


Wariant 4: MacGapNode (OSX Only)

MacGap z integracją Node (wydaje się być coraz czerstwy)


bok: Usługi ...

mogę” • Mów dla systemu OSX na ten temat jako .App, ale możliwe byłoby również stworzenie instalacji usług w tle w NodeJS i łącza do "lokalnej" strony na pulpicie. Większość przeglądarek ma opcję, aby nie wyświetlać wszystkich funkcji (w szczególności firefox).

Wiem, że twoje pytanie dotyczy w szczególności OSX, ale w Windows możesz użyć NSSM do uruchomienia czegokolwiek jako usługi, a ja użyłem go dla usług opartych na NodeJS w oknach. Myślę, że niektóre z powyższych opcji są lepsze w zależności od Twoich potrzeb.


Usunięto:


Ta odpowiedź jest kopiowany do wielu pytań, te odniesienia są głównie do aktualizacji wygodę.

Powiązane problemy