Options
All
  • Public
  • Public/Protected
  • All
Menu

Package plugin-exec

@yarnpkg/plugin-exec

This plugin will add support to Yarn for the exec: protocol. This protocol is special in that it'll instruct Yarn to execute the specified Node script and use its output as package content (thus treating the script as a kind of package factory).

Install

yarn plugin import exec

Usage

package.json

{
  "dependencies": {
    "pkg": "exec:./gen-pkg.js"
  }
}

gen-pkg.js

const {mkdirSync, writeFileSync} = require(`fs`);
const generatorPath = process.argv[2];

mkdirSync(<span class="hljs-subst">${generatorPath}</span>/build);

writeFileSync(<span class="hljs-subst">${generatorPath}</span>/build/package.json, JSON.stringify({ name: pkg, version: 1.0.0, }));

writeFileSync(<span class="hljs-subst">${generatorPath}</span>/build/index.js, module.exports = <span class="hljs-subst">${<span class="hljs-built_in">Date</span>.now()}</span>;\n);

Documentation

The script will be invoked with one parameter which is a temporary directory. You're free to do whatever you want inside, but at the end of the execution Yarn will expect a build directory to have been created inside it that will then be compressed into an archive and stored within the cache.

Busting the cache isn't currently supported - you'll need to manually remove the relevant archives from your cache each time you want to update the content of the package. Help welcome!

Classes

Variables

Object literals

Variables

Const PROTOCOL

PROTOCOL: "exec:" = `exec:`

Object literals

Const plugin

plugin: object

fetchers

fetchers: ExecFetcher[] = [ExecFetcher,]

resolvers

resolvers: ExecResolver[] = [ExecResolver,]

Generated using TypeDoc