CtrlK
CommunityDocumentationLog inGet started
Tessl Logo

tessl/npm-eslint-config-node

tessl install tessl/npm-eslint-config-node@3.0.0

Pluggable ESLint configuration for Node.js that extends ESNext with Node.js-specific safety checks and best practices

Agent Success

Agent success rate when using this tile

73%

Improvement

Agent success rate improvement when using this tile compared to baseline

1.12x

Baseline

Agent success rate without this tile

65%

task.mdevals/scenario-4/

Multi-Package Workspace Manager

Build a command-line tool that manages multiple related packages within a single repository, allowing coordinated development and publishing.

Requirements

Your tool should support the following operations:

Bootstrap Operation

Initialize the workspace by installing dependencies across all packages and creating symlinks between local packages that depend on each other. This allows packages in the monorepo to reference each other during development without publishing to a registry.

Version Management

Update package versions across the workspace. Support both independent versioning (each package maintains its own version) and fixed/locked versioning (all packages share the same version). When updating versions, automatically update cross-package dependencies to match the new versions.

Package Discovery

Automatically discover all packages within the workspace by scanning configured directories (e.g., packages/*). Each package should have its own package.json file.

Dependency Hoisting

When bootstrapping, hoist common dependencies to the root node_modules directory to avoid duplication, while still maintaining package-specific dependencies locally when needed.

Implementation Guidelines

  • Create a configuration file at the root level that specifies:

    • Package locations (glob patterns like packages/*)
    • Versioning strategy (independent or fixed)
    • Any additional workspace settings
  • Support at least these commands:

    • bootstrap: Install all dependencies and link local packages
    • version: Bump versions across packages
    • list: Display all packages in the workspace
  • Handle circular dependencies appropriately

  • Ensure cross-package symlinks are created correctly for local development

Test Cases

  • Bootstrapping a workspace with three packages (pkg-a, pkg-b, pkg-c) where pkg-c depends on pkg-a creates a symlink from pkg-c/node_modules/pkg-a to the local pkg-a directory @test

  • Running the version command with the "patch" increment on a fixed-versioning workspace updates all package.json files to the same new version @test

  • Discovering packages using the glob pattern packages/* correctly identifies all subdirectories containing a package.json file @test

Dependencies { .dependencies }

Lerna { .dependency }

Provides monorepo management capabilities including bootstrapping, versioning, and publishing.

Implementation

@generates

API

/**
 * Initializes a workspace manager for a monorepo
 * @param {string} rootPath - Path to the repository root
 * @param {Object} config - Workspace configuration
 * @returns {WorkspaceManager}
 */
function createWorkspaceManager(rootPath, config) {}

class WorkspaceManager {
  /**
   * Bootstrap the workspace: install dependencies and link packages
   * @returns {Promise<void>}
   */
  async bootstrap() {}

  /**
   * Update package versions
   * @param {string} increment - Version increment type ('major', 'minor', 'patch')
   * @returns {Promise<void>}
   */
  async version(increment) {}

  /**
   * List all packages in the workspace
   * @returns {Promise<Array<Object>>}
   */
  async listPackages() {}
}

module.exports = { createWorkspaceManager };

Version

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/eslint-config-node@3.0.x
tile.json