Giter Site home page Giter Site logo

pants-node's Introduction

Sendwave Pants Node Plugin

Version 1.1.3

This package contains a plugin for the pants build system to run npm based scripts from pants build targets

Requirements

This plugin supports pantsbuild 2.9 and requires python >=3.9 to be installed. It also requires the pants-docker plugin so that a npm_package may be included as dependencies to docker images

Installation

To use this plugin in your existing pants project add it to the plugins entry & add to the backend_packages entry in your pants.toml as below,

[GLOBAL]
plugins = ["sendwave-pants-node@https://GITHUB_RELEASE_URL"]
backend_packages = ["sendwave.pants_node"]

Usage

This plugin adds two new targets to pants,

  • node_library analogous to the builtin python library target; must contain all javascript, css, html, svg, etc etc files in its sources field. You can include all files in one node_library target or add other node_library targets as dependencicies. Unfortunately this does not hook into the ./pants tailor command nor dependency tracking so you will need to manually specify dependencies or create asingle monster target
  • node_package, which should have a list of node_library dependencies, and a list of artifact_paths, those paths will be extracted from the build chroot & included in the package output. NOTE: the package(-lock).json for your package must be included as a source file in one of the node_libary targets the node_package target depends on.

The plugin will attempt to find your currently installed version of node and npm by searching your /bin/:/usr/bin/ paths as well as the value of the NVM_BIN environment variable, this behavior is configurable in the [node] scope of your pants.toml & via command line options. run pants help node for more information.

It will install all dependencies as specified by the package.json file and constrainted by the lock file (again: these must be included in a node_libary target!). Then it will run the npm script specified by the pants:build key in the context of all node_library source files. NOTE: due to how symlinks are handled in pants process output_digests you will not be able to reference the symlinked executable - the pants:build script should use node directly to evaluate the appropriate javascript file.

Example: instead of

{
  "name": "node_package",
  ...
  "scripts": {
    "pants:build": "nuxt generate"
  }
  ...
}

Please Use:

{
  "name": "node_package",
  ...
  "scripts": {
    "pants:build": "node node_modules/nxut/bin/nuxt.js generate"
  }
  ...
}

For more information please reference this github comment.

All paths in the artifact_paths field will then be output to pants-distdir (default dist/).

You may include the built files in a ​docker​ build target by including the node_package target as a dependency to the docker target.

NOTE:

Please make sure you have generated a package.lock file in order to have reproducable builds, you may generate one by running:

npm i --package-lock-only

Changelog

1.1.3

2022-05-31

  • Bug fix: prevent crash if use_nvm is enabled but nvm is not in use.

1.1.2

2022-05-27

  • Yanked

1.1.1

2022-05-27

  • Change Dependency on sendwave-pants-docker from a link hosted on github to a package reference. Which allows this package to be uploaded to pypi. (URL links are not allowed in projects published on pypi)

1.1.0

2022-05-27

  • Changes how the build context is constructed
    • [Breaking] The build context is now restricted to a subtree rooted at the node_package definition, ensure the following when updating:
      • That your node package does not include any source files outside of its subtree.
      • That your package.json & package-lock.json are located in the same directory as the appropriate node_package definition.
      • That your pants:build script does not reference the full source path to the node_package target
  • [Breaking] The package.json & package-lock.json files are no longer included automatically, ensure they are included in a node_library target
  • [Breaking] Removed Symlinks from installed node_modules, ensure your pants:build script references the appropriate executable js file directly.
  • Added the [node] configuration scope with the following configuration options, see ./pants help node for details
    • use_nvm
    • search_paths

1.0

2022-03-08 (Released Internally)

  • Update to use Pantsbuild 2.9

0.0.1

2021-09-07 Initial Release

  • Added node_library & node_package targets
  • Added rules to extract built files from node_package targets

LICENSE

See COPYING for the text of the Apache License, which governs this package.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.