package-proxy
Table of Contents
- Install
- The problem
- The solution
- How to use
Install
Install with npm:
npm i package-proxy --save-dev
Install with yarn:
yarn add package-proxy --dev
The problem
-
Barrel file and Tree Shaking
In most package, all module are exports in one barrel file like this
import { foo, bar, baz } from "packageName"
This can be a dangerous practice because most of bundler (including webpack) will import every module in the bundled flie even if you only import one module.
This can lead to a huge increasing of bundle size.
=> Read more about barrel file and tree shaking
On another side, if you need to expose a lot of module and want to get rid of barrel file,
you will need to let the user do import like this:
import foo from "packageName/lib/foo"
import bar from "packageName/lib/path/to/file/bar"
The solution
This package help you to create proxy to transform import like this:
import foo from "packageName/lib/foo"
import bar from "packageName/lib/path/to/file/bar"
into this:
import foo from "packageName/foo"
import bar from "packageName/bar"
with one config file.
More precisely, it will create a package.json
file like this:
{
"name": "packageName/foo",
"private": true,
"main": "../lib/path/to/module/foo/index.js",
"module": "../esm/path/to/module/foo/index.js",
"types": "../lib/path/to/module/foo/index.d.ts"
}
How to use
Config file
In your root folder, create a pproxy.json
file
{
"packageName": "yourPackageName",
"proxify": [
{
"src": "folderToProxify"
}
]
}
//on continue demain j'ne ai ma claque
CLI
commands
command | description |
---|
write | create the proxy files |
This is an optional command. Avoiding it will also trigger the write command
proxify write
command | description |
---|
clean | clean the proxy files. |
proxify clean
options
option | description |
---|
-c, --config <path> | custom the config file path |
proxify create --config path/to/config.json
option | description |
---|
-h, --help | Show help |
proxify --help
option | description |
---|
-v, --version | Show package version |
proxify --version