open-index/open-npm huggingface dataset:
npm package: @loopmode/create-electron-app
Description: Initializer package for creating `electron-webpack` applications
Latest version: 0.3.8

# @loopmode/create-electron-app

Initializer package for creating `electron-webpack` applications

## Usage

Use `yarn create` with this package to initialize a new project:

```
yarn create @loopmode/electron-app
```

Alternatively, you can use `npm init @loopmode/electron-app --no-yarn`. However, future versions will provide a `--workspaces` option that is incompatible with `npm`.

### Arguments and options

See [@loopmode/generator-electron-app](https://www.npmjs.com/package/@loopmode/generator-electron-app) for CLI arguments and options

## Roadmap

### ✅ 0.0.0 - setup

-   monorepo/lerna
-   workspaces
-   typescript
-   yeoman

### ✅ 0.1.0 - packages

-   setup local development
-   setup local testing of CLI
-   setup "questions and CLI options" system
-   use a single template `electron-webpack-quick-start`
-   publish 0.1.0 on npm and test
    -   publish `create-electron-app` package
    -   publish `generator-electron-app` package
-   Basic arguments and options
    -   `projectName` argument
    -   `--yes` option
    -   `--yarn` option
    -   `--install` option

### ✅ 0.2.0 - options

for `electron-webpack` add-ons

-   `--build-notifications`
-   `--ejs`
-   `--eslint`
-   `--less`
-   `--nunjucks`
-   `--sass`
-   `--typescript`

for customization

-   `--webpack`

### 0.3.0 - workspaces

Add questions and options for whether to use workspaces

-   `--workspaces`
    -   `--lerna`

### 0.4.0 - templates

Add custom templates with a resonable basic setup

-   custom templates
-   `--vue`
-   `--react`
    -   `--react-router`
    -   `[--cra]` if workspaces were selected

### 0.5.0 - documentation

-   compile proper documentation, probably markdown-based
-   setup github pages

### ?.?.? - ?

### 1.0.0 - prerelease

-   Tests?
-   READMEs look good on npm
-   everything works well

### 1.0.0 - release

-   publish 1.0.0 on npm
-   create git tag
-   create medium article
-   inform electron-webpack community
-   post on echojs
-   post on fullstacknews
-   post on hackernews
npm package: @loopmode/crosslink
Description: creates symlinks across workspaces
Author: Jovica Aleksic
Latest version: 0.4.0

# crosslink

A utility for creating symlinks to node packages based on globs.

A symlink is created from each glob result on the left side to each glob result on the right side.
Note that the globs on the left side only match node packages (folders with `package.json`)

Supports scoped package names.

## Installation

Install it as a global tool or as a dependency in your project.

```sh
# global install
npm install -g @loopmode/crosslink

# just in this project
yarn add @loopmode/crosslink --dev
```

Or don't install at all and use `npx` instead (available since npm@5.2.0).
Unfortunately, when using `npx`, you must specify the full package name including scope: `npx @loopmode/crosslink`.

## Usage

Provide crosslink definitions in the format `sourceGlob -> targetGlob` in a separate file or your existing `package.json`.
Then run `crosslink` in the folder.

```sh
# local installation
yarn crosslink

# global installation
crosslink

# no installation
npx @loopmode/crosslink
```

### Definitions fille

#### using `.crosslink` text file

One definition per line:

```
common/packages/* -> client/node_modules
common/packages/* -> server/node_modules
```

#### using `.crosslink` json file

Have a `crosslink` array of definitions:

```json
{
    "crosslink": [
        "common/packages/* -> client/node_modules",
        "common/packages/* -> server/node_modules"
    ]
}
```

#### using `package.json`

You might just as well use your existing `package.json` and define a `"crosslink"` array inside of it.

## Options

Run with `--help` for details.

```
Usage: crosslink [target]

Options:
  -V, --version                output the version number
  -f, --filename [filename]    specify name of definition files (default: "{.crosslink,package.json}")
  -p, --propname [propname]    specify name of property in JSON definitions (default: "crosslink")
  -r, --recursive [recursive]  scan for definition files recursively (default: false)
  -o, --overwrite [overwrite]  overwrite existing target (default: false)
  -d, --dry [dry]              perform a dry run and report, do not create symlinks (default: false)
  --noscope [noscope]          do not create intermediary scope folder (default: false)
  -h, --help                   output usage information

Commands:
  link [options] <definition>

  Arguments:

     target                      The directory in which to operate (default: .)
```
npm package: @loopmode/defined
Description: A utility function for extracting defined values from an object.
Author: Jovica Aleksic
Latest version: 1.0.0

# @loopmode/defined

A utility function for extracting defined values from an object.

## Installation

Install the package in your project.

Using yarn:

```
yarn add @loopmode/defined
```

Using npm:

```
npm install @loopmode/defined --save
```

## Usage

In the default configuration, you import the function and pass it an object. It returns all values that are not `undefined` or an empty object.

```javascript
import getDefined from '@loopmode/defined';

const obj = {
    a: 'a',
    b: null,
    c: undefined,
    d: {},
    e: 0
};

const defined = getDefined(obj); // {a: 'a', b: null, e: 0}
```

The value `null` is not omitted per default, as it's common to send it to server backends in order to clear values.

Empty objects are omitted due to the original use case involving react, state and changes.

### Options

#### drop

An array of values that will be omitted if they strictly match. Defaults to `[undefined]`.

```javascript
import getDefined from '@loopmode/defined';

const obj = {
    a: 'a',
    b: null,
    c: undefined
};

console.log(getDefined(obj)); // {a: 'a', b: null}
console.log(getDefined(obj, { drop: [undefined, null] })); // {a: 'a'}
```

#### keepObjects

A boolean flag for whether to keep values that are an empty object without keys. Defaults to `false`.

```javascript
import getDefined from '@loopmode/defined';

const obj = {
    a: 'a',
    b: {}
};

console.log(getDefined(obj)); // {a: 'a'}
console.log(getDefined(obj, { keepObjects: true })); // {a: 'a', b: {}}
```