defaults = { 'apt': { 'additional_update_commands': { # update npm to latest version 'npm install -g yarn@latest', }, 'packages': { 'nodejs': {}, }, }, 'nodejs': { 'version': 18, }, } VERSIONS_SHIPPED_BY_DEBIAN = { 10: 10, 11: 12, 12: 18, 13: 18, } @metadata_reactor.provides( 'apt/repos/nodejs/items', 'apt/additional_update_commands', ) def nodejs_from_version(metadata): version = metadata.get('nodejs/version') if version != VERSIONS_SHIPPED_BY_DEBIAN[node.os_version[0]]: return { 'apt': { 'additional_update_commands': { # update npm to latest version 'npm install -g npm@latest', }, 'repos': { 'nodejs': { 'items': { f'deb https://deb.nodesource.com/node_{version}.x {{os_release}} main', f'deb-src https://deb.nodesource.com/node_{version}.x {{os_release}} main', }, }, }, }, } else: return { 'apt': { 'packages': { 'npm': {}, }, }, }