@floydspace/projen-components
TypeScript icon, indicating that this package has built-in type declarations

0.3.4 • Public • Published

@floydspace/projen-components

A collection of cool projen components

License npm npm downloads FOSSA Status

GitHub Actions Workflow Status GitHub issues GitHub pull requests

Conventional Commits code style: prettier Contributor Covenant

I love badges

Installation & Usage

  1. If you don't have projen installed and configured, you'll need to go do that first.

  2. Add @floydspace/projen-components to you development dependencies. e.g., in your .projenrc.ts

const project = new TypeScriptProject({
  //...
  devDeps: [
    //...
    "@floydspace/projen-components",
  ],
  //...
});

or

const project = new TypeScriptProject({
  //...
});
project.addDevDeps("@floydspace/projen-components");
  1. Run npx projen to regenerate the project files

  2. Add the components to you project in your .projenrc.ts file. For example, to add all the recommended components, add Recommended

import { Recommended } from "@floydspace/projen-components";

//...

const project = new TypeScriptProject({
  ...Recommended.defaultProjectOptions,
  //...
});

new Recommended(project);

//...

project.synth();

or you can add individual components

import { Husky, EslintUnicorn } from "@floydspace/projen-components";

//...

const project = new TypeScriptProject({
  ...EslintUnicorn.defaultProjectOptions,
  //...
});

new Husky(project);
new EslintUnicorn(project);

//...

project.synth();
  1. Run npx projen to generate the project files

Components

Component Functionality Uses Base Project Type Required Included in Recommended
CodeOfConduct Add a Contributor Covenant v2.1 CODE_OF_CONDUCT.md to your project.
*NOTE: CodeOfConduct is not automatically included in the Recommended component because we believe adopting the Contributor Covenant should be a conscious deliberate decision and not something done inadvertently. We actively recommend its adoption*
Project
Commitlint Checks if your commit messages meet the conventional commit format. commitlint NodeProject
Contributors Adds github authors to the project's contributors list shelljs-plugin-authors NodeProject
CSpell Provides spell checking for your code and your commit messages cspell NodeProject
EslintIgnore Creates an ESLint ignore file containing the projen generated files TypeScriptProject
EslintJsdoc Provides JSDoc specific linting rules for ESLint eslint-plugin-jsdoc TypeScriptProject
EslintJsonC Provides linting of JSON files eslint-plugin-jsonc TypeScriptProject
EslintNoSecrets Adds an eslint plugin to find strings that might be secrets/credentials eslint-plugin-no-secrets TypeScriptProject
EslintPrettierFixer Ensures prettier is the last entry in your eslint extends section, which is needed for prettier to work correctly with eslint TypeScriptProject
EslintUnicorn Provides more than 100 powerful ESLint rules eslint-plugin-unicorn TypeScriptProject
Husky Git hooks made easy 🐶 woof! husky NodeProject
OnlyAllow Only allow project package manager to be used only-allow NodeProject
Recommended Includes all the "included in recommended" components in this table TypeScriptProject
VscodeExtensionRecommendations Manages vscode extension recommendations for your project Project

Pseudo-Components

Pseudo-Components behave like components but are created before the project. This is needed in situations where the project options are being generated.

Pseudo-Component Functionality Base Project Type Required
GitHubber The GitHubber pseudo-component add github repo, issues and homepage URLs to your project NodeProject
NpmReleaser The NpmReleaser pseudo-component add npm release data to the project NodeProject
Organisational The Organisational pseudo-component add organisation based author data to the project NodeProject

Pseudo-Component Usage

Pseudo-Components are constructed and then added to the project using the addToProject() method

import { Organisational } from "@floydspace/projen-components";
const organisational = new Organisational({
  organisation: {
    name: "Mountain Pass",
    email: "info@mountain-pass.com.au",
    url: "https://mountain-pass.com.au",
  },
});
const project = new TypeScriptProject(
  ...organisational.nodeProjectOptions()
  //...
);
// NOTE: The follow step is needed for Pseudo-Components, otherwise
// their `preSynthesize()`, `synthesize()`, and `postSynthesize()`
// methods will not be called
organisational.addToProject(project);

Dependencies (10)

Dev Dependencies (30)

Package Sidebar

Install

npm i @floydspace/projen-components

Weekly Downloads

42

Version

0.3.4

License

Apache-2.0

Unpacked Size

159 MB

Total Files

9424

Last publish

Collaborators

  • f1oyd