nodeJS für Web-Projekt installieren


nodeJS via AppleScript installieren

Wer wie ich häufig mal eine neues web-Projekt installiert, der möchte sicherlich einen automatisierten Ablauf haben. Ich habe mir für die Basis-Installation eines kompletten web-Projekts eine Oberfläche mittels PHP-Scripten zusammengestellt. Somit kann ich mittels eines Mausklicks ein neues Projekt installieren. Allerdings habe ich dabei auch die Grenzen von PHP kennen gelernt.

Ich habe es nicht fertig gebracht nodeJS in ein individuelles Verzeichnis zu installieren. Das ist mir nur über den Umweg über bash oder AppleScript gelungen. Deshalb möchte ich hier die AppleScript-Variante vorstellen, die ich im Einsatz habe.

Das Script erwartet beim Aufruf mindestens 3 Parameter:
1. den absoluten Pfad des web-Projekts. Zum Beispiel "/www/meinProjekt/wwwroot"
2. die Anweisung zum Installieren (install) oder NICHT-Installieren (noInstall) von nodeJS
3. die Anweisung zu Generieren (init) oder NICHT-Generieren (noInit) der package.json Datei

Der Aufruf im Terminal sieht dann zum Beispiel so aus:

$ ./newProject.sh /www/meinProjekt/wwwroot noInstall noInit jquery bootstrap @fortawesome/fontawesome-free popper.js

MeinScript heißt "newProject.sh" und wird folgendes installieren: jQuery, Bootstrap, FontAwesome (Free) und popperJS. - nodeJS wird NICHT installiert und auch kein package.json.

#!/usr/bin/osascript
 
--
--	Created by: Gert Massheimer
--	Created on: 05.09.18
--
--	Copyright (c) 2018 GEMA-SOFT AP
--	All Rights Reserved
--
 
(*
expect at least 3 parameter:
1. abs path to project
2. install or noInstall of NodeJS
3. init or noInit to create package.json
 
parameter 4 ... n
name of package to install via npm
*)
 
on run argv
  -- Set the NodeJS version
  set nodeVer to "v10.9.0"
 
  -- Set the OS version
  -- set OS to "linux" -- on a Linux Server
  set OS to "darwin" -- Mac Version
 
  -- Grab the command line parameter -----------------------------------------
  set projectPath to item 1 of argv
  set install to item 2 of argv -- if "install" then install nodejs
  set init to item 3 of argv -- if "init" then create package.json
 
  -- Here are the standard parameter. No need to change anything below here --
  set nodeFile to "node-" & nodeVer & "-" & OS & "-x64.tar.gz"
  set nodeDir to "node"
  set curlDL to "curl -O https://nodejs.org/dist/" & nodeVer & "/" & nodeFile
  set untarNodeArc to "tar -xzf " & nodeFile & " 2>&1"
  set moveNodeContent to "mv node-" & nodeVer & "-" & OS & "-x64 " & nodeDir
  set deleteNodeFile to "rm -f " & nodeFile
 
  try
    tell application "Terminal"
      do script ("cd " & projectPath) in window 1
      if (install = "install") then
        do script (curlDL) in window 1
        do script (untarNodeArc) in window 1
        do script (moveNodeContent) in window 1
        do script (deleteNodeFile) in window 1
      end if
      if (init = "init") then
        do script ("npm init --yes") in window 1
      end if
      if ((count of argv) > 3) then
        repeat with i from 4 to count of argv
          set package to item i of argv
          do script ("npm install " & package & " --save --silent") in window 1
        end repeat
      end if
    end tell
    tell application "Finder"
      delay 10 -- Give it time to finish the process!
      tell application "Terminal" to quit
    end tell
  on error err
    display dialog err
  end try
end run