ScriptScript
ScriptCertified

yaml
type: "io.kestra.plugin.scripts.node.Script"
yaml
id: nodejs_script
namespace: company.team

tasks:
  - id: script
    type: io.kestra.plugin.scripts.node.Script
    beforeCommands:
      - npm install colors
    script: |
      const colors = require("colors");
      console.log(colors.red("Hello"));

yaml
id: nodejs_script
namespace: company.team

tasks:
  - id: node
    type: io.kestra.plugin.scripts.node.Script
    beforeCommands:
        - npm install json2csv > /dev/null 2>&1
    script: |
        const fs = require('fs');
        const { Parser } = require('json2csv');

        // Product prices in our simulation
        const productPrices = {
            'T-shirt': 20,
            'Jeans': 75,
            'Shoes': 80,
            'Socks': 5,
            'Hat': 25
        }

        const generateOrder = () => {
            const products = ['T-shirt', 'Jeans', 'Shoes', 'Socks', 'Hat'];
            const statuses = ['pending', 'shipped', 'delivered', 'cancelled'];

            const randomProduct = products[Math.floor(Math.random() * products.length)];
            const randomStatus = statuses[Math.floor(Math.random() * statuses.length)];
            const randomQuantity = Math.floor(Math.random() * 10) + 1;

            const order = {
                product: randomProduct,
                status: randomStatus,
                quantity: randomQuantity,
                total: randomQuantity * productPrices[randomProduct]
            };

            return order;
        }

        let totalSales = 0;
        let orders = [];

        for (let i = 0; i < 100; i++) {
            const order = generateOrder();
            orders.push(order);
            totalSales += order.total;
        }

        console.log(`Total sales: $${totalSales}`);

        const fields = ['product', 'status', 'quantity', 'total'];
        const json2csvParser = new Parser({ fields });
        const csvData = json2csvParser.parse(orders);

        fs.writeFileSync('{{ outputDir }}/orders.csv', csvData);

        console.log('Orders saved to orders.csv');

yaml
id: nodejs_script
namespace: company.team

tasks:
  - id: node
    type: io.kestra.plugin.scripts.node.Script
    beforeCommands:
      - npm i @kestra-io/libs
    script: |
      const Kestra = require('@kestra-io/libs');
      Kestra.outputs({test: 'hello world'});

  - id: get_outputs
    type: io.kestra.plugin.core.log.Log
    message: "{{ outputs.node.vars.test }}"

yaml
id: node_custom_package
namespace: company.team

tasks:
  - id: script
    type: io.kestra.plugin.scripts.node.Script
    inputFiles:
      package.json: |
        {
          "name": "your_project_name",
          "version": "1.0.0",
          "type": "module",
          "dependencies": {
            "colors": "^1.4.0"
          }
        }
    beforeCommands:
      - npm install
    script: |
      import colors from 'colors';
      console.log(colors.red("Hello"));
Properties
SubTypestring
Defaultnode
SubTypestring
Defaulttrue
SubTypestring
Default["/bin/sh","-c"]
Definitions
enabledbooleanstring
Defaulttrue
excludearray
SubTypestring
folderPerNamespacebooleanstring
Defaultfalse
ifExistsstring
DefaultOVERWRITE
Possible Values
OVERWRITEFAILWARNIGNORE
includearray
SubTypestring
namespacesarray
SubTypestring
Default["{{flow.namespace}}"]
SubTypestring
DefaultAUTO
Possible Values
LINUXWINDOWSAUTO
Definitions
type*Requiredobject
configstringobject
cpu
cpusnumberstring
credentials
authstring
identityTokenstring
passwordstring
registrystring
registryTokenstring
usernamestring
deletebooleanstring
Defaulttrue
deviceRequestsarray
capabilitiesarray
SubTypearray
countintegerstring
deviceIdsarray
SubTypestring
driverstring
optionsobject
SubTypestring
entryPointarray
SubTypestring
Default[ "" ]
extraHostsarray
SubTypestring
fileHandlingStrategystring
DefaultVOLUME
Possible Values
MOUNTVOLUME
hoststring
killGracePeriodstring
DefaultPT0S
Formatduration
memory
kernelMemorystring
memorystring
memoryReservationstring
memorySwapstring
memorySwappinessstring
oomKillDisablebooleanstring
networkModestring
portBindingsarray
SubTypestring
privilegedbooleanstring
pullPolicyobject
resumebooleanstring
Defaulttrue
shmSizestring
userstring
versionstring
volumesarray
SubTypestring
waitbooleanstring
Defaulttrue
type*Requiredobject
versionstring
region*Requiredstring
type*Requiredobject
bucketstring
completionCheckIntervalstring
DefaultPT5S
Formatduration
computeResource
bootDiskstring
cpustring
memorystring
deletebooleanstring
Defaulttrue
entryPointarray
SubTypestring
impersonatedServiceAccountstring
lifecyclePoliciesarray