open-index/open-npm huggingface dataset:
npm package: @remax/plugin-error-screen
Description: 使用真正的 React 构建跨平台小程序
Author: Wei Zhu
Latest version: 2.15.14

# `remax-plugin-error-screen`

> TODO: description

## Usage

```
const remaxPluginErrorScreen = require('remax-plugin-error-screen');

// TODO: DEMONSTRATE API
```
npm package: @remax/plugin-less
Description: Remax Less 插件
Author: Wei Zhu
Latest version: 1.0.0

# @remax/plugin-less

增加 Less 支持。

## 安装

```bash
$ npm install @remax/plugin-less --save
```

## 使用

```js
const less = require('@remax/plugin-less');

module.exports = {
  plugins: [less()],
};
```

## 配置

同 `less-loader` 的[配置](https://github.com/webpack-contrib/less-loader#options)。

## LICENSE

[MIT](LICENSE)
npm package: @remax/plugin-linaria
Description: Remax linaria 插件
Author: Watsonhaw
Latest version: 1.0.0

# @remax/plugin-linaria

增加 linaria css in js支持。

## 安装

```bash
$ npm install @remax/plugin-linaria linaria @linaria/shaker @linaria/babel-preset --save
```

```bash
$ yarn add @remax/plugin-linaria linaria @linaria/shaker @linaria/babel-preset
```

## 使用

```js
const linaria = require('@remax/plugin-linaria');

module.exports = {
    plugins: [linaria()],
};
```

## 根目录新增 babel.config.js 并配置

```js
module.exports = {
    presets: [
        ['remax', {
            framework: 'react',
            ts: true
        }],
        '@linaria' // 添加到 babel-preset
    ]
}
```

## 根目录新增 linaria.config.js 并配置
```js
module.exports = {
    rules: [
        {
            action: require('@linaria/shaker').default,
        },
        {
            test: /node_modules[\/\\](?!remax)/,
            action: "ignore"
        }
    ]
}
```

## LICENSE

[MIT](LICENSE)
npm package: @remax/plugin-minify
Description: 使用esbuild压缩Remax项目体积
Author: watsonhaw
Latest version: 1.0.0

# @remax/plugin-minify

使用[esbuild-loader](https://github.com/privatenumber/esbuild-loader) 压缩中大型 Remax 项目 js 文件。

> 小型 Remax 项目不推荐开启，因为原生文件编译打包已足够快。反之中大型 Remax 项目开启会获取显著效果。

## 安装

```bash
$ npm install @remax/plugin-minify --save
或者
$ yarn add @remax/plugin-minify -D
```

## 使用

```js
// remax.config.js
const RemaxMinifyPlugin = require('@remax/plugin-minify')

module.exports = {
  plugins: [RemaxMinifyPlugin()]
};
```

## 配置

[esbuild-loader配置项](https://github.com/privatenumber/esbuild-loader#minify)

使用默认配置即可获得不错的效果，如需要更极至压缩请自行配置即可。

```js
// remax.config.js
const RemaxMinifyPlugin = require('@remax/plugin-minify')

module.exports = {
  plugins: [RemaxMinifyPlugin({
    target: "es2015",
    minifyWhitespace: true,
    minifyIdentifiers: true,
    minifySyntax: true
  })]
};
```

> 为了兼容小程序默认使用了 `target:"es2015"` (es6)语法，请勿使用新语法和 `minifyWhitespace: true` (移除空白)。 css 则不开启。

## LICENSE

[MIT](LICENSE)
npm package: @remax/plugin-sass
Description: Remax Sass 插件
Author: Wei Zhu
Latest version: 1.0.1

# @remax/plugin-sass

增加 Sass 支持。

## 安装

```bash
$ npm install @remax/plugin-sass --save
```

## 使用

```js
const sass = require('@remax/plugin-sass');

module.exports = {
  plugins: [sass()],
};
```

## 配置

同 `sass-loader` 的[配置](https://github.com/webpack-contrib/sass-loader#options)。

## LICENSE

[MIT](LICENSE)
npm package: @remax/plugin-stylus
Description: Remax Stylus 插件
Author: Wei Zhu
Latest version: 1.0.0

# @remax/plugin-stylus

增加 Stylus 支持。

## 安装

```bash
$ npm install @remax/plugin-stylus --save
```

## 使用

```js
const stylus = require('@remax/plugin-stylus');

module.exports = {
  plugins: [stylus()],
};
```

## 配置

同 `stylus-loader` 的[配置](https://github.com/shama/stylus-loader)。

## LICENSE

[MIT](LICENSE)
npm package: @remax/plugin-wx-shake
Description: 移除remax中没有使用过的wx接口
Author: watsonhaw
Latest version: 1.0.13

# @remax/plugin-wx-shake

用于移除微信协议隐私中没使用过的wx接口

该插件源于Remax好友 [@BlackCloud37](https://github.com/BlackCloud37) 编写。

> 注意!!! 只能移除小程序中没有使用的wx接口，如果使用到接口请不要移除，否则会导致小程序无法正常运行

## 安装

```bash
$ npm install @remax/plugin-wx-shake --save
或者
$ yarn add @remax/plugin-wx-shake -D
```

## 使用

```js
// remax.config.js
const WxShake = require('@remax/plugin-wx-shake');

module.exports = {
    plugins: [WxShake()],
};
```

## 配置

支持传入参数数组，当有参数时会使用开发者参数代替默认参数，如果不传则使用默认参数。

默认以下接口数组。

```js
const defaultShakeApiList = [
    'getWeRunData',
    'chooseLocation',
    'chooseInvoiceTitle',
    'chooseInvoice',
    'chooseImage',
    'chooseMedia',
    'chooseLicensePlate',
    'openBluetoothAdapter',
    'createBLEPeripheralServer',
    'addPhoneContact',
    'addPhoneRepeatCalendar',
    'addPhoneCalender',
    'saveFileToDisk',
]
```

```js
// remax.config.js
const WxShake = require('@remax/plugin-wx-shake');

// eg: 只需要移除微信运动接口(接收参数为一个数组，请勿解构)
const apiList = ['getWeRunData']

module.exports = {
    plugins: [WxShake(apiList)],
};
```

## LICENSE

[MIT](LICENSE)
npm package: @remax/postcss-px2units
Description: postcss plugin
Author: yingye
Latest version: 0.2.1

English | [简体中文](./README_CN.md)

# postcss-px2units

[![Build Status](https://travis-ci.org/yingye/postcss-px2units.svg?branch=master)](https://travis-ci.org/yingye/postcss-px2units)
[![npm version](https://badge.fury.io/js/postcss-px2units.svg)](https://badge.fury.io/js/postcss-px2units)
[![change-log](https://img.shields.io/badge/changelog-md-blue.svg)](https://github.com/yingye/postcss-px2units/blob/master/CHANGELOG.md)

A plugin for [PostCSS](https://github.com/ai/postcss) that generates rpx units from pixel units, it also can generate units which you want.

## Install

```
$ npm install postcss-px2units --save-dev
```

## Usage

### Input/Output

With the default settings, we will get this output.

```css
/* input */
p {
  margin: 0 0 20px;
  font-size: 32px;
  line-height: 1.2;
  letter-spacing: 1px; /* no */
}

/* output */
p {
  margin: 0 0 20rpx;
  font-size: 32rpx;
  line-height: 1.2;
  letter-spacing: 1px;
}
```

### Example

```js
var fs = require('fs');
var postcss = require('postcss');
var pxtorem = require('postcss-pxtorem');
var css = fs.readFileSync('main.css', 'utf8');
var options = {
    replace: false
};
var processedCss = postcss(pxtorem(options)).process(css).css;

fs.writeFile('main-rem.css', processedCss, function (err) {
  if (err) {
    throw err;
  }
  console.log('Rem file written.');
});
```

### options

Type: Object | Null

Default:

```js
{
  divisor: 1,
  multiple: 1,
  decimalPlaces: 2,
  comment: 'no',
  targetUnits: 'rpx'
}
```

Detail:

- divisor(Number): divisor, replace pixel value with pixel / divisor.
- multiple(Number): multiple, replace pixel value with pixel * multiple.
- decimalPlaces(Number): the number of decimal places. For example, the css code is `width: 100px`, we will get the vaule is `Number(100 / divisor * multiple).toFixed(decimalPlaces)`.
- comment(String): default value is 'no'. For example, if you set it 'not replace', the css code `width: 100px; /* not replace */` will be translated to `width: 100px;`
- targetUnits(String): The units will replace pixel units, you can set it 'rem'.

### Use with gulp-postcss

```js
var gulp = require('gulp');
var postcss = require('gulp-postcss');
var pxtounits = require('postcss-pxtounits');

gulp.task('css', function () {
  return gulp.src('./test/src/css/**/*.css')
    .pipe(postcss([pxtounits()]))
    .pipe(gulp.dest('./test/dist/css'));
});
```

## Tips

If you want to use it in WePY, please use [wepy-plugin-px2units](https://github.com/yingye/wepy-plugin-px2units).
npm package: @remax/react-devtools-core
Description: Use react-devtools outside of the browser
Latest version: 4.7.1

# `react-devtools-core`

A standalone React DevTools implementation.

This is a low-level package. If you're looking for the Electron app you can run, **use `react-devtools` package instead.**

## API

### `react-devtools-core`

This is similar requiring the `react-devtools` package, but provides several configurable options. Unlike `react-devtools`, requiring `react-devtools-core` doesn't connect immediately but instead exports a function:

```js
const { connectToDevTools } = require("react-devtools-core");
connectToDevTools(config);
```

Run `connectToDevTools()` in the same context as React to set up a connection to DevTools.  
Be sure to run this function *before* importing e.g. `react`, `react-dom`, `react-native`.

The `config` object may contain:
* `host: string` (defaults to "localhost") - Websocket will connect to this host.
* `port: number` (defaults to `8097`) - Websocket will connect to this port.
* `websocket: Websocket` - Custom websocked to use. Overrides `host` and `port` settings if provided.
* `resolveRNStyle: (style: number) => ?Object` - Used by the React Native style plug-in.
* `isAppActive: () => boolean` - If provided, DevTools will poll this method and wait until it returns true before connecting to React.

## `react-devtools-core/standalone`

Renders the DevTools interface into a DOM node.

```js
require("react-devtools-core/standalone")
  .setContentDOMNode(document.getElementById("container"))
  .setStatusListener(status => {
    // This callback is optional...
  })
  .startServer(port);
```

Reference the `react-devtools` package for a complete integration example.

## Development

Watch for changes made to the backend entry point and rebuild:
```sh
yarn start:backend
```

Watch for changes made to the standalone UI entry point and rebuild:
```sh
yarn start:standalone
```
npm package: @remax/regenerator-runtime
Description: Runtime for Regenerator-compiled generator and async functions.
Author: Ben Newman
Latest version: 0.11.1

# regenerator-runtime

Standalone runtime for
[Regenerator](https://github.com/facebook/regenerator)-compiled generator
and `async` functions.

To import the runtime as a module (recommended), either of the following
import styles will work:
```js
// CommonJS
const regeneratorRuntime = require("regenerator-runtime");

// ECMAScript 2015
import regeneratorRuntime from "regenerator-runtime";
```

To ensure that `regeneratorRuntime` is defined globally, either of the
following styles will work:
```js
// CommonJS
require("regenerator-runtime/runtime");

// ECMAScript 2015
import "regenerator-runtime/runtime";
```

To get the absolute file system path of `runtime.js`, evaluate the
following expression:
```js
require("regenerator-runtime/path").path
```
npm package: @remax/rollup-plugin-url
Description: Inline import files as data-URIs, or copy them to output
Author: Arpad Borsos
Latest version: 3.0.2

# rollup-plugin-url

Inline import files as data-URIs, or copy them to output

## Install

```sh
npm i --save-dev rollup-plugin-url
```

## Usage

```js
import {rollup} from "rollup"
import url from "rollup-plugin-url"

const writeoptions = {dest: "output/output.js"}
const plugin = url({
  limit: 10 * 1024, // inline files < 10k, copy files > 10k
  include: ["**/*.svg"], // defaults to .svg, .png, .jpg and .gif files
  emitFiles: true // defaults to true
})

rollup({
  entry: "main.js",
  plugins: [plugin],
})
.then(bundle => bundle.write(writeoptions))
```

## Options

### limit

Optional. Type: `number`.

This is the file size limit to inline files. If files exceed this limit, they
will be copied instead to the destination folder and the hashed filename will
be given instead. If value set to `0` all files will be copied.

Defaults to 14336 (14kb).

### include / exclude

Optional. Type: a minimatch pattern, or array of minimatch patterns

These patterns determine which files are inlined. Defaults to .svg, .png, .jpg
and .gif files.

### publicPath

Optional. Type: `string`

The `publicPath` will be added in front of file names when they are not inlined
but copied.

### emitFiles

Optional. Type: `boolean`

The `emitFiles` option is used to run the plugin as you normally would but prevents any files being emitted. This is useful for when you are using rollup to emit both a client side and server side bundle.

### fileName

Optional. Type: `string`

When `emitFiles` is `true`, the `fileName` option can be used to rename the emitted files. It accepts the following string replacements:

- `[hash]` - The hash value of the file's contents
- `[name]` - The name of the imported file, without it's file extension
- `[extname]` - The extension of the imported file, including the leading `.`
- `[dirname]` - The parent directory name of the imported file, including trailing `/`

Defaults to: `"[hash][extname]"`

### sourceDir

Optional. Type: `string`

When using the `[dirname]` replacement in `fileName`, uses this directory as the source directory to create the file path from rather than the parent directory of the imported file. For example:

*src/path/to/file.js*
```js
import png from "./image.png";
```
*rollup.config.js*
```js
url({
  fileName: "[dirname][hash][extname]",
  sourceDir: path.join(__dirname, "src")
})
```
Emitted File: `path/to/image.png`

### destDir

Optional. Type: `string`

The destination dir to copy assets, usually used to rebase the assets according to HTML files.
npm package: @remax/scheduler
Description: Cooperative scheduler for the browser environment.
Latest version: 0.13.6

# `scheduler`

This is a package for cooperative scheduling in a browser environment. It is currently used internally by React, but we plan to make it more generic.

The public API for this package is not yet finalized.

### Thanks

The React team thanks [Anton Podviaznikov](https://podviaznikov.com/) for donating the `scheduler` package name.
npm package: @remba/image-glow
Description: A React component for creating glowing image hover effect using background-image css property.
Author: Remba
Latest version: 1.0.5

# React Image Glow [:Hover]

A React component for creating glowing image hover effect using background-image css property.

## Installation

```bash
npm install @remba/image-glow
```

# Usage

```jsx
import ImageGlow from "@remba/image-glow";

function App() {
  return (
    <ImageGlow
      url="https://example.com/image.jpg"
      size={1}
      shadowSize={0.5}
      blurAmount={4}
    />
  );
}
```
npm package: @remcohaszing/eslint
Description: A strict ESLint configuration.
Author: Remco Haszing
Latest version: 14.0.0

# @remcohaszing/eslint

[![build status](https://github.com/remcohaszing/eslint/workflows/ci/badge.svg)](https://github.com/remcohaszing/eslint/actions)
[![codecov](https://codecov.io/gh/remcohaszing/eslint/branch/main/graph/badge.svg)](https://codecov.io/gh/remcohaszing/eslint)
[![npm version](https://img.shields.io/npm/v/@remcohaszing/eslint)](https://www.npmjs.com/package/@remcohaszing/eslint)
[![npm downloads](https://img.shields.io/npm/dm/@remcohaszing/eslint)](https://www.npmjs.com/package/@remcohaszing/eslint)

This is a strict shareable ESLint configuration. All ESLint core rules and a variety of ESLint
plugins have been carefully considered. Overrides are used to apply rules based on context.

## Table of Contents

- [Installation](#installation)
- [Configuration](#configuration)
  - [TypeScript](#typescript)
  - [Markdown](#markdown)
  - [Disabling rules](#disabling-rules)
- [Ignored files](#ignored-files)
- [Warnings](#warnings)
- [Compatibility](#compatibility)
- [License](#license)

## Installation

```sh
npm install --save-dev @remcohaszing/eslint
```

## Configuration

Create `eslint.config.js` with the following content:

```js
export { default } from '@remcohaszing/eslint'
```

### TypeScript

This configuration enabled ESLint for TypeScript automatically.

Some rules from `@typescript-eslint/eslint-plugin` require TypeScript type checking features to be
enabled. Unfortunately, this makes ESLint slow. Enabling these rules is recommended for small
projects only. To enable this, add the following to `eslint.config.js`:

```js
import { define, typechecking } from '@remcohaszing/eslint'

export default define(typechecking)
```

### Markdown

Code blocks in Markdown are linted by default using
[`@eslint/markdown`](https://github.com/eslint/markdown). The type checking rules from
`@typescript-eslint/eslint-plugin` don’t work with markdown code blocks.

Some other rules have been turned off, because these rules may conflict with the purpose of the
documentation.

### Disabling rules

Rules can be disabled by adding an extra ESLint configuration item to the configuration array. For
example:

```js
import { define } from '@remcohaszing/eslint'

export default define([
  {
    rules: {
      'no-console': 'off'
    }
  }
])
```

## Ignored files

By default ESLint ignores `node_modules/` and all dotfiles. This ESLint configuration also ignores
the patterns from `.gitignore`.

## Warnings

All ESLint that are turned on will trigger error, not warnings. The notable exception is
`@typescript-eslint/no-deprecated`.

This is to allow a smooth migration if a dependency decides to deprecate an API. To turn make
warnings cause ESLint to exit with exit code 1, run:

```sh
eslint
```

## Compatibility

This project requires Node.js 24 or greater.

## License

[MIT](./LICENSE.md) © [Remco Haszing](https://github.com/remcohaszing)
npm package: @remcolakens/simple-component-generator
Description: Simple component generator that helps you to kickstart your new components
Author: Remco Lakens
Latest version: 1.0.5

# Simple Component Generator

![Node](https://img.shields.io/static/v1?label=NodeJS&message=v14.16.0&color=blue)
![NPM](https://img.shields.io/static/v1?label=NPM&message=v6.14.11&color=orange)

> Simple Component Generator helps you to kickstart your new components, by removing the cumbersome process of creating and configuring each file individually.

[![Video](https://s4.gifyu.com/images/Screen-Recording-2021-03-08-at-1.gif)](https://s4.gifyu.com/images/Screen-Recording-2021-03-08-at-1.gif)

## Requirements

This tool is built on top of Node, so you don't need to install much tooling. It will basically work with any front-end setup just make sure to provide this tool with the instructions (blueprint folder) to fit your requirements. To get started you'll need the following:

- Node LTS
- Terminal
- Front-end setup

## Installation

For the best experience install this package globally with `npm` by this running this command in your terminal:

```
npm add -g @remcolakens/simple-component-generator
```

That's it! You've successfully installed the Simple Component Generator.

### Configuration

Now all that's left is to create a new folder in your project like `@blueprint` and add all the files you need.
As the name suggest, this folder will act as the blueprint for all of your generated components, the blueprint folder is **NOT** restricted to any file type.

When creating the blueprint folder you'll have a couple of new variables at your disposal: 

```
PLACEHOLDER     // example: MyComponent
FILENAME        // example: myComponent (camel-cased)  
COMPONENTTYPE   // example: Atoms (based on Atomic Design )
```

These variables are all case-sensitive and reserved names, under the hood the Simple Component Generator just replaces these variables with the data you provide.

Last but not least, it's highly recommended creating a new config file. In this file you can define the `component` and `blueprint` path so it will integrate in any front-end setup.
The `withTypeDir` will be a boolean value to make paths like `./atoms/MyComponent`

In the root of your project create a new file with the name `.blueprint.json` using the following example and change the paths.

#### .blueprint.json

```json
{
  "componentDir": "./components/",
  "blueprintDir": "./blueprint/",
  "withTypeDir": true
}
```



## How to Use

It's very simple to get started just run the following command in your terminal:

```shell
generate
```

You will get a simple questionnaire and that’s it your component has been generated.

## Bugs

Found a bug? Please verify your Node version with the versions listed above.

Still not working, or do you have other questions / feedback?
Please post an issue in the Github repository, and I will have a look at it.

## List of contributers

- [Remco Lakens](info@remcolakens.nl)

## License

[MIT](LICENSE)
npm package: @remcostoeten/visualize-component-debugger
Description: Visualize react components to improve debugging and development experience.
Author: Remco Stoeten
Latest version: 1.0.8

# VisualizeComponent

`VisualizeComponent` is a React component that helps visualize the mounting of a component in development mode. It can be used to wrap any component and will show an alert toast when the component is mounted. This can be useful for debugging and understanding the lifecycle of your components.

## Props

- `showAlert` (optional): A boolean that determines whether to show the alert toast when the component is mounted. Default is `false`.
- `children` (optional): The child components to be rendered within this component.
- `width` (optional): The width of the outline that visualizes the component. Default is `'10px'`.
- `color` (optional): The color of the outline that visualizes the component. Default is `'red'`.
- `border` (optional): The style of the border that visualizes the component. Can be either `'dashed'` or `'solid'`. Default is `'dashed'`.
- `invert` (optional): A boolean that determines the color scheme of the toast alert. If `true`, the toast alert will have a light theme. If `false`, it will have a dark theme. Default is `false`.
- `validPorts` (optional): An array of strings representing the ports that are considered as development ports. If the application is running on one of these ports, it is considered to be in development mode. Default is `['3000', '3001', '9001', '9000', '8000', '8888']` *POC*.

## Usage

Pick your poison

### `npm install @remcostoeten/visualize-component-debugger`

### `pnpm install @remcostoeten/visualize-component-debugger`

### `yarn add @remcostoeten/visualize-component-debugger`

### `bun install @remcostoeten/visualize-component-debugger`


```jsx
import VisualizeComponent from './VisualizeComponent';

function MyComponent() {
  return (
    <VisualizeComponent showAlert>
      <div>My Component</div>
    </VisualizeComponent>
  );
}

// or

function OtherComp() {
    return (
        <VisualizeComponent border='dashed' color='yellow' width='1px' invert>
            <h2>v hard to debug</h2>
        </VisualizeComponent>
    );
}
```

 > :warning: **Experimental**: This component is currently in an experimental stage. While it's functional and can be used, please be aware that it might contain bugs and the API might change in future versions.
npm package: @remcovaes/web-test-runner-vite-plugin
Description: @web/test-runner plugin to allow the build to be done by Vite
Author: Remco Vaes
Latest version: 1.4.1

# @web/dev-server Vite plugin

A [@web/test-runner] plugin that allows files to be built with Vite instead of [@web/dev-server].
Inspired by [vite-web-test-runner].

## Usage

```
npm install @remcovaes/web-test-runner-vite-plugin --save-dev
```

## Examples
Simple and no configuration:
```javascript
// web-test-runner.config.js
import { vitePlugin } from '@remcovaes/web-test-runner-vite-plugin';

export default {
	files: 'src/**/*.test.ts',
	plugins: [
		vitePlugin(),
	],
};
```

Use the following prop in the [@web/test-runner] to remove vite logging.

```javascript
// web-test-runner.config.js
import { removeViteLogging } from '@remcovaes/web-test-runner-vite-plugin';

export default {
	...,
	filterBrowserLogs: removeViteLogging,
};
```

Use a [vite config] to make the build more complex. 
This can be done via a config file or directly passing it to the plugin.
For example, to enable react support without a vite config, you can use the following config:
```javascript
// web-test-runner.config.js
import { vitePlugin } from './src/index.js';

import reactRefresh from '@vitejs/plugin-react-refresh';

export default {
	files: [ 'test/**/*.test.ts', 'test/**/*.test.jsx' ],
	plugins: [
		vitePlugin({
			plugins: [ reactRefresh() ],
		}),
	],
};
```


[@web/test-runner]: https://modern-web.dev/docs/test-runner/overview/
[@web/dev-server]: https://modern-web.dev/docs/dev-server/overview/
[vite-web-test-runner]: https://github.com/material-svelte/vite-web-test-runner-plugin/
[vite config]: https://vitejs.dev/config/
npm package: @remedi8/lodash-4.17.10
Description: backported fixes for CVE-2021-23337, CVE-2020-8203, CVE-2019-10744, CVE-2018-16487, CVE-2018-3721
Latest version: 0.0.1

# lodash v4.17.10

[Site](https://lodash.com/) |
[Docs](https://lodash.com/docs) |
[FP Guide](https://github.com/lodash/lodash/wiki/FP-Guide) |
[Contributing](https://github.com/lodash/lodash/blob/master/.github/CONTRIBUTING.md) |
[Wiki](https://github.com/lodash/lodash/wiki "Changelog, Roadmap, etc.") |
[Code of Conduct](https://js.foundation/conduct/) |
[Twitter](https://twitter.com/bestiejs) |
[Chat](https://gitter.im/lodash/lodash)

The [Lodash](https://lodash.com/) library exported as a [UMD](https://github.com/umdjs/umd) module.

Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli):
```shell
$ npm run build
$ lodash -o ./dist/lodash.js
$ lodash core -o ./dist/lodash.core.js
```

## Download

 * [Core build](https://raw.githubusercontent.com/lodash/lodash/4.17.10/dist/lodash.core.js) ([~4 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.17.10/dist/lodash.core.min.js))
 * [Full build](https://raw.githubusercontent.com/lodash/lodash/4.17.10/dist/lodash.js) ([~24 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.17.10/dist/lodash.min.js))
 * [CDN copies](https://www.jsdelivr.com/projects/lodash)

Lodash is released under the [MIT license](https://raw.githubusercontent.com/lodash/lodash/4.17.10/LICENSE) & supports modern environments.<br>
Review the [build differences](https://github.com/lodash/lodash/wiki/build-differences) & pick one that’s right for you.

## Installation

In a browser:
```html
<script src="lodash.js"></script>
```

Using npm:
```shell
$ npm i -g npm
$ npm i --save lodash
```

In Node.js:
```js
// Load the full build.
var _ = require('lodash');
// Load the core build.
var _ = require('lodash/core');
// Load the FP build for immutable auto-curried iteratee-first data-last methods.
var fp = require('lodash/fp');

// Load method categories.
var array = require('lodash/array');
var object = require('lodash/fp/object');

// Cherry-pick methods for smaller browserify/rollup/webpack bundles.
var at = require('lodash/at');
var curryN = require('lodash/fp/curryN');
```

**Note:**<br>
Install [n_](https://www.npmjs.com/package/n_) for Lodash use in the Node.js < 6 REPL.

## Why Lodash?

Lodash makes JavaScript easier by taking the hassle out of working with arrays,<br>
numbers, objects, strings, etc. Lodash’s modular methods are great for:

 * Iterating arrays, objects, & strings
 * Manipulating & testing values
 * Creating composite functions

## Module Formats

Lodash is available in a [variety of builds](https://lodash.com/custom-builds) & module formats.

 * [lodash](https://www.npmjs.com/package/lodash) & [per method packages](https://www.npmjs.com/browse/keyword/lodash-modularized)
 * [lodash-es](https://www.npmjs.com/package/lodash-es), [babel-plugin-lodash](https://www.npmjs.com/package/babel-plugin-lodash), & [lodash-webpack-plugin](https://www.npmjs.com/package/lodash-webpack-plugin)
 * [lodash/fp](https://github.com/lodash/lodash/tree/npm/fp)
 * [lodash-amd](https://www.npmjs.com/package/lodash-amd)