REPL avatar
REPL
Try for free

No credit card required

View all Actors
REPL

REPL

mnmkng/repl
Try for free

No credit card required

Develop scripts and tools blazingly fast with this Apify REPL. You no longer need to build your actor with every code change just to test something out. Create a REPL task and hack away. No builds needed. Latest Apify included.

Dockerfile

1# Dockerfile contains instructions how to build a Docker image that
2# will contain all the code and configuration needed to run your actor.
3# For a full Dockerfile reference,
4# see https://docs.docker.com/engine/reference/builder/
5
6# First, specify the base Docker image. Apify provides the following
7# base images for your convenience:
8#  apify/actor-node-basic (Node.js 10 on Alpine Linux, small and fast)
9#  apify/actor-node-chrome (Node.js 10 + Chrome on Debian)
10#  apify/actor-node-chrome-xvfb (Node.js 10 + Chrome + Xvfb on Debian)
11# For more information, see https://docs.apify.com/actor/build#base-images
12# Note that you can use any other image from Docker Hub.
13FROM apify/actor-node-chrome
14
15# Second, copy just package.json since it should be the only file
16# that affects NPM install in the next step
17COPY package.json ./
18
19# Install NPM packages, skip optional and development dependencies to
20# keep the image small. Avoid logging too much and print the dependency
21# tree for debugging
22RUN npm --quiet set progress=false \
23 && npm install --only=prod --no-optional \
24 && echo "Installed NPM packages:" \
25 && npm list || true \
26 && echo "Node.js version:" \
27 && node --version \
28 && echo "NPM version:" \
29 && npm --version
30
31# Next, copy the remaining files and directories with the source code.
32# Since we do this after NPM install, quick build will be really fast
33# for most source file changes.
34COPY . ./
35
36# Optionally, specify how to launch the source code of your actor.
37# By default, Apify's base Docker images define the CMD instruction
38# that runs the source code using the command specified
39# in the "scripts.start" section of the package.json file.
40# In short, the instruction looks something like this:
41CMD node fetch.js | node

INPUT_SCHEMA.json

1{
2  "title": "REPL",
3  "description": "",
4  "type": "object",
5  "schemaVersion": 1,
6  "properties": {
7    "code": {
8      "title": "Code",
9      "type": "string",
10      "description": "Enter the code to be executed.",
11      "editor": "javascript",
12      "prefill": "console.log('Hello world!');"
13    }
14  },
15  "required": [
16    "code"
17  ]
18}

fetch.js

1const ApifyClient = require('apify-client');
2
3const client = new ApifyClient();
4
5const opts = {
6    storeId: process.env.APIFY_DEFAULT_KEY_VALUE_STORE_ID,
7    key: 'INPUT',
8    token: process.env.APIFY_TOKEN,
9};
10
11client.keyValueStores.getRecord(opts)
12    .then(output => {
13        const input = output && output.body;
14        const { code } = input;
15        const type = typeof code;
16        if (type !== 'string') throw new Error(`Expected script to evaluate but received: ${type}`);
17        if (!code.length) throw new Error('Cannot evaluate empty script.');
18        process.stdout.write(code);
19    })
20    .catch(err => {
21        console.error(err);
22        process.exit(1);
23    })

package.json

1{
2    "name": "my-actor",
3    "version": "0.0.1",
4    "dependencies": {
5        "apify": "^0.20.3"
6    },
7    "scripts": {
8        "start": ""
9    },
10    "author": "Me!"
11}
Developer
Maintained by Community
Actor metrics
  • 1 monthly user
  • 2 stars
  • 100.0% runs succeeded
  • Created in Jan 2020
  • Modified 9 months ago
Categories