Script ​Script

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
SubType string
Default node
SubType string
Default true
SubType string
Default ["/bin/sh","-c"]
SubType string
Default AUTO
Possible Values
LINUXWINDOWSAUTO
Default 0
SubType string
Default busybox
Default true
SubType string
Default false
Default OVERWRITE
Possible Values
OVERWRITEFAILWARNIGNORE
SubType string
SubType string
Default ["{{flow.namespace}}"]
Default true
Default { "image": "busybox" }
Default default
Default ALWAYS
Possible Values
IF_NOT_PRESENTALWAYSNEVER
Default true
Validation RegExp \d+\.\d+\.\d+(-[a-zA-Z0-9-]+)?|([a-zA-Z0-9]+)
Default PT5S
Format duration
Default PT1H
Format duration
Default PT10M
Format duration
Default PT5S
Format duration
Default true
Default true
Default false
Validation RegExp \d+\.\d+\.\d+(-[a-zA-Z0-9-]+)?|([a-zA-Z0-9]+)
Default PT1H
Format duration
SubType integer
Default PT5S
Format duration
Default true
Default true
SubType string
Default ["https://www.googleapis.com/auth/cloud-platform"]
Validation RegExp \d+\.\d+\.\d+(-[a-zA-Z0-9-]+)?|([a-zA-Z0-9]+)
Default PT5S
Format duration
Default PT1H
Format duration
Possible Values
ACTION_UNSPECIFIEDRETRY_TASKFAIL_TASKUNRECOGNIZED
Default v1
Default RSA
Default https://kubernetes.default.svc
Validation RegExp \d+\.\d+\.\d+(-[a-zA-Z0-9-]+)?|([a-zA-Z0-9]+)
Default PT5S
Format duration
Default true
SubType string
Default e2-medium
Default 2
Minimum >= 0
Maximum <= 10
Default true
SubType string
Default ["https://www.googleapis.com/auth/cloud-platform"]
Validation RegExp \d+\.\d+\.\d+(-[a-zA-Z0-9-]+)?|([a-zA-Z0-9]+)
Default PT5S
Format duration
Default PT1H
Format duration
Min length 1
SubType
SubType string
SubType string
Default IF_NOT_PRESENT
Possible Values
IF_NOT_PRESENTALWAYSNEVER
SubType string
Default true
SubType
SubType string
Default [ "" ]
SubType string
Default VOLUME
Possible Values
MOUNTVOLUME
Default PT0S
Format duration
SubType string
Default IF_NOT_PRESENT
Possible Values
IF_NOT_PRESENTALWAYSNEVER
Validation RegExp \d+\.\d+\.\d+(-[a-zA-Z0-9-]+)?|([a-zA-Z0-9]+)
SubType string
Default true
SubType array
SubType string
SubType string
Default PT5S
Format duration
Default true
Default { "request": { "memory": "2048", "cpu": "1" } }
Default true
Default PT15M
Format duration
Validation RegExp \d+\.\d+\.\d+(-[a-zA-Z0-9-]+)?|([a-zA-Z0-9]+)
Default PT1H
Format duration