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

@creuna/codegen

v0.3.0

Published

This package has utilities for generating javascript files.

Downloads

173

Readme

codegen

This package has utilities for generating javascript files.

API

  • createComponentsFile(options)
  • createPagesFile(options)
  • createPathsFile(options)

These functions all take the same options object.

The functions read a provided directory and look for react components. All found components that have an index.js file and use the same name for the .jsx file and the containing folder name will be included in the generated files. The content of the generated files depends on what function is used.

Example file tree

/
  components
    component
      component.jsx
      index.js
    other-component
      blabla.jsx
      index.js
    another-component
      another-component.jsx

In this example, only component will be included. blabla.jsx does not match other-component, and another-component lacks an index.js file.

Options

  • fileHeader: String = "// NOTE: Do not edit this file. It is automatically generated." (String prepended to the generated file)

  • fileName: String (Name of the file to write)

  • outputPath: String (Full path to the folder in which to write the file)

  • prettierOptions: Object (Prettier options object, used to format the output file)

  • searchPath: String (The path in which to look for components)

  • fileExtension: String (The file extension you are working with. It will change the import style of the components. Written in the form .[fileExtension]. It defaults to '.jsx') (For example: '.tsx'.)

createComponentsFile

const { createComponentsFile } = require("@creuna/codegen");
const path = require("path");

createComponentsFile({
  searchPath: path.join(__dirname, "components"),
  fileName: "app.components.js",
  outputPath: __dirname,
  fileExtension: '.tsx'
});

app.components.js

// NOTE: Do not edit this file. It is automatically generated.
import Component from "./components/component";

export { Component };

createPagesFile

This function is inteded for use with static site generation. All valid components will be imported, parsed for metadata and exported from the resulting javascript file. The function supports passing metadata in comments using yaml syntax.

Example page component

/*
group: Eksempelgruppe
name: Eksempelside
path: /eksempelside
*/
import React from "react";
const ExamplePage = () => <div />;
export default ExamplePage;

createPagesFile

const { createPagesFile } = require("@creuna/codegen");
const path = require("path");

createPagesFile({
  fileName: "pages.js",
  searchPath: path.join(__dirname, "pages"),
  outputPath: __dirname,
  fileExtension: '.jsx'
});

pages.js

// NOTE: Do not edit this file. It is automatically generated.
import ExamplePage from "./example-page";

export default [
  {
    component: ExamplePage,
    group: "Eksempelgruppe",
    name: "Eksempelside",
    path: "/eksempelside"
  }
];

createPathsFile

This function is inteded for use with react-router. The generated file exports an array of paths (using commonJs syntax) that can be fed to react-router. yaml comments are respected.

Example page component

/*
path: /some-path
*/
import React from "react";
const ExamplePage = () => <div />;
export default ExamplePage;

createPathsFile

const { createPathsFile } = require("@creuna/codegen");
const path = require("path");

createPagesFile({
  fileName: "paths.js",
  searchPath: path.join(__dirname, "pages"),
  outputPath: __dirname
});

paths.js

// NOTE: Do not edit this file. It is automatically generated.
module.exports = ["/some-path"];