Giter Site home page Giter Site logo

linecode / fastpack Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fastpack/fastpack

0.0 2.0 0.0 4.76 MB

Pack JS code fast & easy

Home Page: http://fastpack.io

License: MIT License

OCaml 66.77% Standard ML 4.61% Makefile 0.78% JavaScript 26.21% Shell 1.43% CSS 0.17% TypeScript 0.03%

fastpack's Introduction

fastpack

Build Status

Pack JS code into a single bundle fast & easy.

Motivation

The goal for fastpack is to provide fast and robust development time bundling for JavaScript applications which scales up to tens of thounsands of modules without sacrificing development experience.

We want sub-1000ms bundle time and sub-100ms incremental rebundle time for medium-sized applications (around 1000 modules). We are finally there!

Installation

You can install via npm (or yarn):

% npm install fpack

Usage

To produce a development bundle:

% fpack --development ./index.js

To produce a production bundle:

% fpack ./index.js \
  --postprocess 'babel --presets env' \
  --postprocess 'uglify -cm'

Note that babel, babel-preset-env and uglify-js packages must be installed.

Reference

Run fpack --help to see the available invocation options:

NAME
       fpack - Pack JavaScript code into a single bundle

SYNOPSIS
       fpack [OPTION]... [ENTRY POINTS]...

ARGUMENTS
       ENTRY POINTS
           Entry points. Default: ['.']

OPTIONS
       -d, --debug
           Print debug output

       --development
           Build bundle for development

       --help[=FMT] (default=auto)
           Show this help in format FMT. The value FMT must be one of `auto',
           `pager', `groff' or `plain'. With `auto', the format is `pager` or
           `plain' whenever the TERM env var is `dumb' or undefined.

       --mock=PACKAGE[:SUBSTITUTE]
           Mock PACKAGE requests with SUBSTITUTE requests. If SUBSTITUTE is
           omitted empty module is used.

       -n NAME, --name=NAME (absent=index.js)
           Output File Name. The target bundle filename will be NAME

       --no-cache
           Do not use cache at all (effective in development mode only)

       --node-modules=PATH, --nm=PATH
           Paths to 'node_modules' directory. Should be inside the project
           directory.. Defaults to ['node_modules']

       -o DIR, --output=DIR (absent=./bundle)
           Output Directory. The target bundle will be DIR/index.js.

       --postprocess=COMMAND
           Apply shell command on a bundle file. The content of the bundle
           will be sent to STDIN and STDOUT output will be collected. If
           multiple commands are specified they will be applied in the order
           of appearance

       --preprocess=PATTERN:PROCESSOR?OPTIONS[!...]
           Preprocess modules matching the PATTERN with the PROCESSOR.
           Optionally, the processor may receive some OPTIONS in form:
           'x=y&a=b'. There are 2 kinds of currently supported processors:
           'builtin' and the Webpack loader. 'builtin' preprocessor provides
           the following transpilers: stripping Flow types, object spread &
           rest operators, class properties (including statics), class/method
           decorators, and React-assumed JSX conversion. 'builtin' may be
           skipped when setting this option, i.e. '\.js$' and '\.js$:builtin'
           are absolutely equal. An example of using the Webpack loader:
           '\.js$:babel-loader?filename=.babelrc'.

       --report=[ json ] (absent=text)
           Output packer statistics

       --resolve-extension=EXTENSION
           Provide extensions to be considered by the resolver for the
           extension-less path. Extensions will be tried in the specified
           order. If no extension should be tried, provide '' as an argument.
           Defaults to [.js, .json]

       --target=[ app | esm | cjs ] (absent=app)
           Deployment target.

       --version
           Show version information.

       -w, --watch
           Watch file changes and rebuild bundle

Development

Make sure you have esy (at least 0.1.31 version) installed:

npm install -g [email protected]

Now install dependencies & build everything:

make bootstrap

Then to produce the executable:

make build

To run tests:

make test

To test compiled executables prepend with esy x:

esy x fpack

As merlin and others live inside sandboxed environment you'd want to execute your editor from inside it:

esy vim
esy nvim
esy vscode
esy sublime

Alternatively you can enter into sandboxed shell:

esy shell

And execute commands from there.

Release Process

Currently release process is assumed to be performed on macOS with Docker installed. Docker is needed to produce Linux x64 binaries.

Run either of those:

% make release-patch
% make release-minor
% make release-major

After that succeeds follow the printed instructions.

fastpack's People

Contributors

andreypopp avatar exced avatar gilbert avatar rgrinberg avatar trysound avatar zindel avatar

Watchers

 avatar  avatar

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.