Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@loopback/build

Package Overview
Dependencies
Maintainers
0
Versions
155
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@loopback/build

A set of common scripts and default configurations to build LoopBack 4 or other TypeScript modules

  • 11.0.6
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

@loopback/build

This module contains a set of common scripts and default configurations to build LoopBack 4 or other TypeScript modules, including:

These scripts first try to locate the CLI from target project dependencies and fall back to bundled ones in @loopback/build.

Basic use

To use @loopback/build for your package:

  1. Run the following command to add @loopback/build as a dev dependency.

npm i @loopback/build --save-dev

  1. Configure your project package.json as follows:
"scripts": {
    "build": "lb-tsc",
    "build:watch": "lb-tsc --watch",
    "clean": "lb-clean",
    "lint": "npm run prettier:check && npm run eslint",
    "lint:fix": "npm run prettier:fix && npm run eslint:fix",
    "prettier:cli": "lb-prettier \"**/*.ts\" \"**/*.js\"",
    "prettier:check": "npm run prettier:cli -- -l",
    "prettier:fix": "npm run prettier:cli -- --write",
    "eslint": "lb-eslint --report-unused-disable-directives .",
    "eslint:fix": "npm run eslint -- --fix",
    "pretest": "npm run clean && npm run build",
    "test": "lb-mocha \"dist/__tests__\"",
    "posttest": "npm run lint",
    "start": "npm run build && node .",
    "prepublishOnly": "npm run test"
  },

Please remember to replace your-module-name with the name of your module.

Now you run the scripts, such as:

  • npm run build - Compile TypeScript files and copy resources (non .ts files) to outDir
  • npm test - Run all mocha tests
  • npm run lint - Run eslint and prettier on source files
  1. Override default configurations in your project
  • lb-tsc

    By default, lb-tsc searches your project's root directory for tsconfig.build.json then tsconfig.json. If neither of them exists, a tsconfig.json will be created to extend from @loopback/build/config/tsconfig.common.json.

    To customize the configuration:

    • Create tsconfig.build.json or tsconfig.json in your project's root directory

      {
        "$schema": "http://json.schemastore.org/tsconfig",
        "extends": "@loopback/build/config/tsconfig.common.json",
        "compilerOptions": {
          "outDir": "dist",
          "rootDir": "src"
        },
        "include": ["src"]
      }
      
    • Set options explicitly for the script

      lb-tsc -p tsconfig.json --target es2017 --outDir dist
      

      For more information, see https://www.typescriptlang.org/docs/handbook/compiler-options.html.

    • The following un-official compiler options are available:

      OptionDescription
      --copy-resourcesCopy all non-typescript files from src and test to outDir, preserving their relative paths.
    • Using ttypescript

      Stability: ⚠️Experimental⚠️

      If you would like to use ttypescript and its available plugins, you can substitute lb-tsc with lb-ttsc, or pass the option lb-tsc --use-ttypescript. If ttypescript is not installed, the default TypeScript compiler tsc will be used instead.

  1. Run builds
npm run build
  1. Run code coverage reports
  • lb-nyc

    lb-nyc is a simple wrapper for nyc.

    To customize the configuration:

    • Create .nycrc in your project's root directory

      {
        "include": ["dist"],
        "exclude": ["dist/__tests__/"],
        "extension": [".js", ".ts"],
        "reporter": ["text", "html"],
        "exclude-after-remap": false
      }
      
    • Update your package.json scripts:

      "precoverage": "npm test",
      "coverage": "open coverage/index.html",
      "coverage:ci": "lb-nyc report --reporter=text-lcov | coveralls",
      "test": "lb-nyc npm run mocha",
      "test:ci": "lb-nyc npm run mocha"
      

      coverage:ci sets up integration with Coveralls.

A note on console logs printed by tests

We consider (console) logging from tests as a bad practice, because such logs usually clutter the test output and make it difficult to distinguish legitimate error messages from the noise.

By default, lb-mocha detects when the tests and/or the application tested have printed console logs and fails the test run with the following message:

=== ATTENTION - INVALID USAGE OF CONSOLE LOGS DETECTED ===

If you need more information about behavior in the test, then the first choice should be to use a better or more descriptive error assertion. If that's not possible, then use debug statements to print additional information when explicitly requested.

A typical situation is that a test is sending an HTTP request and the server responds with an error code as expected. However, because the server is configured to log failed requests, it will print a log also for requests where the failure was expected and intentional. The solution is to configure your REST server to suppress error messages for that specific error code only. Our @loopback/testlab module is providing a helper createUnexpectedHttpErrorLogger that makes this task super easy.

Alternatively, it's also possible to disable detection of console logs by calling lb-mocha with --allow-console-logs argument.

Contributions

Tests

run npm test from the root folder.

Contributors

See all contributors.

License

MIT

FAQs

Package last updated on 12 Sep 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc