tis-nodejs icon

Node.js

Paquet d’installation silencieuse pour Node.js

25.4.0-1
Development
Development

Les paquets PREPROD sont des paquets construits via LUTI. Ils restent généralement 5 jours en PREPROD, après quoi un deuxième scan VirusTotal est effectué pour vérifier que le status n'a pas changé.
Si le paquet réussit ce dernier contrôle, il est promu en PROD et publié sur le store.

  • package: tis-nodejs
  • name: Node.js
  • version: 25.4.0-1
  • categories: Development
  • maintainer: WAPT Team,Tranquil IT,Jimmy PELÉ
  • editor: OpenJS Foundation
  • licence: opensource_free,cpe:/a:mit:x11_license,wapt_public
  • locale: all
  • target_os: macos
  • impacted_process: node
  • architecture: arm
  • signature_date:
  • size: 27.06 Mo
  • installed_size: 83.45 Mo
  • homepage : https://nodejs.org/

package           : tis-nodejs
version           : 25.4.0-1
architecture      : arm
section           : base
priority          : optional
name              : Node.js
categories        : Development
maintainer        : WAPT Team,Tranquil IT,Jimmy PELÉ
description       : Node.js is an open-source, cross-platform, JavaScript runtime environment that executes JavaScript code outside a web browser
depends           : 
conflicts         : 
maturity          : PREPROD
locale            : all
target_os         : macos
min_wapt_version  : 2.3
sources           : https://nodejs.org/en/download/current/
installed_size    : 83446606
impacted_process  : node
description_fr    : Node.js est un environnement d'exécution JavaScript ouvert, multiplateforme, qui exécute du code JavaScript en dehors d'un navigateur web
description_pl    : Node.js to open-source'owe, wieloplatformowe środowisko uruchomieniowe JavaScript, które wykonuje kod JavaScript poza przeglądarką internetową
description_de    : Node.js ist eine quelloffene, plattformübergreifende JavaScript-Laufzeitumgebung, die JavaScript-Code außerhalb eines Webbrowsers ausführt
description_es    : Node.js es un entorno de ejecución de JavaScript de código abierto y multiplataforma que ejecuta código JavaScript fuera de un navegador web
description_pt    : Node.js é um ambiente de código aberto, multi-plataforma, JavaScript runtime que executa o código JavaScript fora de um navegador web
description_it    : Node.js è un ambiente runtime JavaScript open-source e multipiattaforma che esegue codice JavaScript al di fuori di un browser web
description_nl    : Node.js is een open-source, cross-platform, JavaScript runtime omgeving die JavaScript code uitvoert buiten een web browser
description_ru    : Node.js - это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом, которая выполняет код JavaScript вне веб-браузера
audit_schedule    : 
editor            : OpenJS Foundation
keywords          : javascript,js,node,open,code
licence           : opensource_free,cpe:/a:mit:x11_license,wapt_public
homepage          : https://nodejs.org/
package_uuid      : 4f3cfe72-d941-438e-a2bc-a89e92b5cded
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : https://github.com/nodejs/node/blob/master/CHANGELOG.md
min_os_version    : 6.3
max_os_version    : 
icon_sha256sum    : 77ad7394671d64dc6a1045c837364be28fabdc7dfa7299d29b76fe1c4c2d7769
signer            : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date    : 2026-01-19T18:01:05.000000
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
signature         : i+ArMFcMtQQ+rCwGgWBf7DOuWYIssvd8JyaPvKDw5qo5Tr9Cpi/4hMETV3CN1JESEZj5+w7js0fIPcHN3SE3s590WdISqG1b1/h5dgRScKRhG5rQgffdH4Gr6jDRN6DUhjuV48DHGs3AcX4KfLjoPMMczMeWFXbbhichTJS3qjrpn8n6W6/t0Ax1BKaWUfsEmN0w/moFcstfPnCftxQm5yTeKJ3oR+w6kCatlnYdK5Oxj9dEfMao4SwkYhy//B6z/FISWqvO239lRd2IkguJFA8WttV2Ja5KBxVPtRsnjDiTVt8seKaSlp16tYvXq2RZdaMNBSpxI0fd5dq7r1mFcA==

# -*- coding: utf-8 -*-
from setuphelpers import *
import tarfile

app_name = "nodejs"
bin_path = makepath("/", "usr", "local", "bin")
app_path = "/opt/nodejs"

def extract_tar_gz(filename, path="."):
    with tarfile.open(filename, "r:xz") as tar:
        result = tar.extractall(path)

def install():
    archive_name = glob.glob("node-v*-darwin-arm64.tar.xz")[0]

    archive_len = len(archive_name) - len('.tar.xz')
    extracted_folder = archive_name[:archive_len]

    # Remove old symlinks
    if isfile(makepath(bin_path, "node")):
        remove_file(makepath(bin_path, "node"))
    if isfile(makepath(bin_path, "npm")):
        remove_file(makepath(bin_path, "npm"))
    
    #Delete older version 
    if isdir(app_path):
        remove_tree(app_path)

    #Extracting archive to app_path
    print(f"Extracting: {archive_name}")
    extract_tar_gz(archive_name, path= app_path)

    #Path to node and npm files 
    node_app = makepath(app_path, extracted_folder, "bin", "node")
    npm_app = makepath(app_path, extracted_folder, "lib", "node_modules", "npm", "bin", "npm-cli.js")
    
    # Creating symbolic links of node and npm-cli.js to /usr/local/bin
    print(f"Creating alias in path")
    os.symlink(node_app, makepath(bin_path, "node"))

    print(f"Creating alias in path")
    os.symlink(npm_app, makepath(bin_path, "npm"))

def uninstall():

    # Removing of symlink
    if isfile(makepath(bin_path, "node" )):
        remove_file(makepath(bin_path, "node" ))

    if isfile(makepath(bin_path, "npm" )):
        remove_file(makepath(bin_path, "npm" ))    

    # Removing app directory
    if isdir(app_path):
        print(f"Removing application directory: {app_path}")
        remove_tree(app_path)

# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import bs4 as BeautifulSoup
from urllib.parse import urlparse, urljoin
import requests


def update_package():
    # Declaring local variables
    package_updated = False
    proxies = get_proxies()
    if not proxies:
        proxies = get_proxies_from_wapt_console()

    base_url = "https://nodejs.org"
    url = "https://nodejs.org/dist/latest/"
    #latest_url = requests.head(url).headers['Location']

    download_dict = {
        "windows-arm64": "-arm64.msi",
        "windows-x64": "-x64.msi",
        "windows-x86": "-x86.msi",
        "windows-all": "-x86.msi",
        "macos-x64": "-darwin-x64.tar.xz",
        "macos-arm": "-darwin-arm64.tar.xz",
        "linux-x64": "-linux-x64.tar.xz",
        "linux-arm64": "-linux-arm64.tar.xz ",
    }

    # Getting latest version information from official sources
    print("URL used is: %s" % url)
    links = bs_find_all(url,'a','href')
    to_download = download_dict[control.target_os + "-" + ensure_list(control.architecture)[0]]
    for link in links:
        if link['href'].endswith(to_download):
            download_url = base_url + link['href']
            latest_bin = link.text
            version = latest_bin.split("-")[1].replace("v", "")

    # Downloading latest binaries
    print("Latest %s version is: %s" % (control.name, version))
    print("Download URL is: %s" % download_url)
    if not isfile(latest_bin):
        print("Downloading: %s" % latest_bin)
        wget(download_url, latest_bin, proxies=proxies)
    else:
        print("Binary is present: %s" % latest_bin)

    for f in glob.glob(f'*{to_download}'):
        if f != latest_bin:
            remove_file(f)

    # Checking version from file
    if get_os_name() == "Windows" and "windows" in control.target_os.lower():
        version_from_file = get_version_from_binary(latest_bin)
        if Version(version_from_file, 4) == Version(version, 4):
            print(f"INFO: Binary file version ({version_from_file}) corresponds to online version ({version})")
        else:
            error(f"ERROR: Binary file version ({version_from_file}) do NOT corresponds to online version ({version})")

    # Changing version of the package
    if Version(version, 4) > Version(control.get_software_version(), 4):
        print("Software version updated (from: %s to: %s)" % (control.get_software_version(), Version(version)))
        package_updated = True
    else:
        print("Software version up-to-date (%s)" % Version(version))
    control.set_software_version(version)
    control.save_control_to_wapt()

    # Validating or not update-package-sources
    return package_updated

01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
cccbe9cb6c88c0ec97543048dbde762ebb455b6dfb2b37e222362976901e8636 : WAPT/control
77ad7394671d64dc6a1045c837364be28fabdc7dfa7299d29b76fe1c4c2d7769 : WAPT/icon.png
b216e7c8cd745ce13211a34d5a6db6715d3181e7de8fb2775338bc655fdae740 : luti.json
82fe1e7c2b851ebd4ae3413bf1347990e4c351884c7d5983da895c6c8562573b : node-v25.4.0-darwin-arm64.tar.xz
5a88b202ef3d9e630f490a5672c995bb5b29241c39e52953c364eca4fa5fbdb0 : setup.py
74dba776be638698974fd0888cd6c0cfff4574b204d608c7f703d7ab3270a74c : update_package.py