npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

directus-seeder

v0.1.0

Published

Seeder for Directus is a simple package using knexjs and the directus API to seed directus with (dummy) data.

Downloads

133

Readme

Seeder for Directus

Introduction

Seeder for Directus is a simple package using knexjs and the directus API to seed directus with (dummy) data.

Example

Here is an example of a seed file.

const { seed } = require('directus-seeder');
const { Directus } = require('@directus/sdk');

exports.seed = async function (knex) {
    const items = [
        {
            "id": 1,
            "name": "Item 1",
            "description": "This is the first item",
           "image": "file:./images/item1.jpg",
        },
        {
            "id": 2,
            "name": "Item 2",
            "description": "This is the second item",
            "image": "file:./images/item2.jpg",
        },
    ];
    
    const directus = new Directus('http://localhost:8055', {
        auth: {
            staticToken: 'STATIC_TOKEN',
        },
    });

     // If you want to use email and password. You should remove the staticToken above and use the following line.
     // await directus.auth.login({ email, password })
   
    await seed(knex, directus, 'items', items, {
        clearTableEntries: true,
        fileRoot: __dirname
    })
};

Installation

  1. Install Seeder for Directus with the following command

    npm install directus-seeder
  2. Make Sure that the directus SDK and knexjs are installed.

  3. Create a knexfile.js by using the following command

    knex init

    The knexfile.js will contain the configuration of your database.
    For more information visit the offical knexjs documentation.

Create a seed

You can create a new seed file with the following command

knex seed:make seed_name

By default, the seed file will be created in the /seeds directory. You can set a different directory in the knexfile.js file.

Available helper functions

seed()

The seed function is used to seed data into the database:

const { seed } = require('directus-seeder');

await seed(knex, directus, 'table_name', entries, {
   clearTableEntries: true,
   fileRoot: __dirname
})

The seed function will take the following parameters:

  • knex (Knex): instance of knexjs

  • directus (IDirectus<TypeMap>): authenticated directus instance

    Your authenticated directus instance should look like this:

    const { Directus } = require('@directus/sdk');
      
    const directus = new Directus('http://localhost:8055', {
        auth: {
            staticToken: 'STATIC_TOKEN',
        },
    });

    If you want to use email and password. You should remove the staticToken above and use the following line.

    await directus.auth.login({ email, password })
  • tableName (string): the name of the table

  • entries (object[]): the data to be inserted

    This argument should be an array of objects:

    const items = [
       {
          id: 1,
          name: 'Item 1',
          description: 'This is the first item',
          image: 'file:./images/item1.jpg',
       },
       {
          id: 2,
          name: 'Item 2',
          description: 'This is the second item',
          image: 'file:./images/item1.jpg',
       },
    ];

    Use file:./path/to/file to handle files. The path should be relative to the directory where the seed command is executed. If the fileRoot option is set, the path needs to be defined relative to the given fileRoot. The file will be uploaded via the directus api and the correct file id will be added to the database entry.

  • options (object)

    • clearTableEntries (boolean): If enabled, the table will be cleared before inserting the data.
    • fileRoot (string): When defined file: paths are being resolved relative to the given fileRoot. By default, the directory in which the seed command is executed is used to generate the file path.

Execute seed

You can run the seed file with the following command

knex seed:run --specific=seed_name.js

or you can run all the seeds in alphabetical order with the following command

knex seed:run