GithubHelp home page GithubHelp logo

efidiles / lodash-ts-imports-loader Goto Github PK

View Code? Open in Web Editor NEW
40.0 2.0 4.0 13 KB

Transpiles ES6 lodash imports into typescript imports to help with tree-shaking

License: MIT License

JavaScript 100.00%

lodash-ts-imports-loader's Introduction

Jump to

Overview

[jump to TOC]

A webpack preloader which transpiles ES6 lodash imports into typescript imports to help with tree-shaking.

Basically transpiles from ES6 syntax:

import { debounce } from 'lodash';

into typescript syntax:

import debounce = require('lodash/debounce');

before the source code is being taken through the typescript compiler.

This way webpack 2 will be able to only include the code that's being actually used.

Installation

[jump to TOC]

  1. Install the package:
$ npm install lodash-ts-imports-loader --save-dev

Usage

[jump to TOC]

In your webpack.config.js add the lodash-ts-imports-loader preloader:

// ...
module: {
    rules: [
        {
            test: /\.ts$/,
            loader: 'lodash-ts-imports-loader',
            exclude: /node_modules/,
            enforce: "pre"
        },
        // ...
    ],
    // ...
}
// ...

Now somewhere in your main.ts typescript file add an ES6 import for lodash:

import { debounce } from 'lodash';
// make sure you have this line as well otherwise you're not using the import member
// and the lodash code will not be included in the bundle
console.log(debounce); 

run webpack bundling and check your bundle size.

Update the code to:

import { debounce, zip } from 'lodash';
// make sure you have this lines as well otherwise you're not using the import members
// and the lodash code will not be included in the bundle
console.log(debounce); 
console.log(zip); 

run webpack bundling and check your bundle size.
This time the bundle size should be larger.

Links

[jump to TOC]

NPM:
https://www.npmjs.com/package/lodash-ts-imports-loader
GITHUB:
https://github.com/efidiles/lodash-ts-imports-loader.git

Author

[jump to TOC]

Eduard Fidiles

License

[jump to TOC]
Released under the MIT license.

Copyright © 2016, Eduard Fidiles

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.