Skip to content Skip to sidebar Skip to footer

Remove Some Code Lines In Production Distribution Files?

I'm using Babel and Webpack to generate ES5 code from ES6. There are some validations that is used to reduce the mistakes i do while coding. class Logger { /** * @param {L

Solution 1:

It appears the other answers are outdated. With webpack 4, you can set mode: 'production' in your webpack config.

In your code, check for development mode like this:

if (process.env.NODE_ENV === 'development') {
    if(info instanceofLogModel)
        thrownewError("not a instance of LogModel");
}

When webpack creates a bundle with mode: 'production', all the code inside these if clauses, along with the if clauses themselves, will be automatically removed from the bundle.

There is no need to use the define plugin explicitly (it is used by webpack “under the hood”), and it's not necessary to use something like webpack-unassert-loader or webpack-strip-block mentioned in other answers.

Check out this little demo repo I have made to try this out: https://github.com/pahund/webpack-devprod-experiment

Solution 2:

A cleaner option will be using define-plugin from webpack.

In config file:

new webpack.DefinePlugin({ __DEV: JSON.stringify(true) })

app.js:

if(__DEV){ console.log("logged only in dev env") }

value of __DEV will be provided by webpack at compile time.

Solution 3:

webpack-strip-block is a good solution. It removes a block of code in your production code when compiling.

/* develblock:start *//* develblock:end */

Not limited to asserts and no redundant code in prod.

Solution 4:

You can use the assert package to enforce your code, then use webpack-unassert-loader or webpack-strip-assert to strip your assertions for production code.

var assert = require('assert').ok;

classLogger {
    /**
     * @param {LogModel} info
     *  {LogTypes} type
     *  {String} message
     *  {Date} date
     */staticlog(info) {
        assert(info instanceofLogModel, "Param must be an instance of LogModel");
        notify(info);
    }
}

Solution 5:

I created a sample project to evaluate all the different approaches explain in this thread. My favorite is to use string-replace-webpack-plugin.

Post a Comment for "Remove Some Code Lines In Production Distribution Files?"