Giter Site home page Giter Site logo

developit / optimize-plugin Goto Github PK

View Code? Open in Web Editor NEW
659.0 12.0 15.0 79 KB

Optimized Webpack Bundling for Everyone. Intro ⤵️

Home Page: https://youtu.be/cLxNdLK--yI?t=662

License: Apache License 2.0

JavaScript 100.00%
webpack webpack-plugin modern-javascript

optimize-plugin's Introduction

Optimize Plugin for Webpack

Optimize your code for modern browsers while still supporting the other 10%, increasing your build performance, reducing bundle size and improving output quality.

Put simply: it compiles code faster, better and smaller.

Features

  • Much faster than your current Webpack setup
  • Transparently optimizes all of your code
  • Automatically optimizes all of your dependencies
  • Compiles bundles for modern browsers (90%) and legacy browsers (10%)
  • Removes unnecessary polyfills, even when inlined into dependencies
  • Builds a highly-optimized automated polyfills bundle

Install

npm install --save-dev optimize-plugin

Usage

First, disable any existing configuration you have to Babel, minification, and module/nomodule.

Then, add OptimizePlugin to your Webpack plugins Array:

plugins: [
  new OptimizePlugin({
    // any options here
  })
]

Options

Option Type Description
concurrency number|false Maximum number of threads to use. Default: the number of available CPUs.
Pass false for single-threaded, sometimes faster for small projects.
sourceMap boolean|false Whether or not to produce source maps for the given input.
minify boolean|false Minify using Terser, if turned off only comments will be stripped.
downlevel boolean|true Produces a bundle for nomodule browsers. (IE11, ...)
modernize boolean|true Attempt to upgrade ES5 syntax to equivalent modern syntax.
verbose boolean|false Will log performance information and information about polyfills.
polyfillsFilename string|polyfills.legacy.js The name for the chunk containing polyfills for the legacy bundle.
exclude RegExp[]|[] Asset patterns that should be excluded

How does this work?

Instead of running Babel on each individual source code file in your project, optimize-plugin transforms your entire application's bundled code. This means it can apply optimizations and transformations not only to your source, but to your dependencies - making polyfill extraction and reverse transpilation steps far more effective.

This setup also allows optimize-plugin to achieve better performance. All work is done in a background thread pool, and the same AST is re-used for modern and legacy transformations. Previous solutions for module/nomodule have generally relied running two complete compilation passes, which incurs enormous overhead since the entire graph is built and traversed multiple times. With optimize-plugin, bundling and transpilation are now a separate concerns: Webpack handles graph creation and reduction, then passes its bundles to Babel for transpilation.

FAQ

What do I do with my current Babel configuration?

In order to migrate to optimize-plugin, you'll need to move your babel configuration into a .babelrc or babel.config.js file and remove babel-loader from your Webpack configuration. Remember, optimize-plugin only uses your babel configuration when generating modern bundles. Legacy bundles are automatically compiled to ES5 without looking at your Babel configuration, though you can customize their compilation by defining a browserslist field in your package.json.

Do I need to include any polyfills manually?

In general, adopting optimize-plugin means removing all of your current polyfills, since the plugin automatically detects and polyfills JavaScript features for legacy bundles. The plugin does not polyfill DOM features though, so be sure to keep including any DOM polyfills your application relies (ParentNode.append(), Module Workers, etc).

Remember: the premise of this plugin is that you don't need to configure JS transpilation or polyfills - it's all done automatically based on usage.

License

Apache-2.0

optimize-plugin's People

Contributors

alireza-mh avatar dangreen avatar developit avatar dreierf avatar jovidecroock avatar rschristian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

optimize-plugin's Issues

TypeError: OptimizePlugin is not a constructor

Looks like npm version not yet updated

Latest update: February 18, 2020 – 0.0.1

https://yarnpkg.com/package/optimize-plugin

image

node_modules/webpack-cli/bin/cli.js:93
throw err;
^
TypeError: OptimizePlugin is not a constructor
at Object. (project/internals/webpack/prod.js:41:39)
at Module._compile (project/node_modules/v8-compile-cache/v8-compile-cache.js:192:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (project/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
at WEBPACK_OPTIONS (project/node_modules/webpack-cli/bin/utils/convert-argv.js:114:13)
at requireConfig (project/node_modules/webpack-cli/bin/utils/convert-argv.js:116:6)
at project/node_modules/webpack-cli/bin/utils/convert-argv.js:123:17
at Array.forEach ()
at module.exports (project/node_modules/webpack-cli/bin/utils/convert-argv.js:121:15)
at project/node_modules/webpack-cli/bin/cli.js:71:45
at Object.parse (project/node_modules/yargs/yargs.js:576:18)
at project/node_modules/webpack-cli/bin/cli.js:49:8
at Object. (project/node_modules/webpack-cli/bin/cli.js:366:3)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object. (project/node_modules/webpack/bin/webpack.js:156:2)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
error Command failed with exit code 1.

Babel configs are ignored

In the ReadMe, there's the following line:

In order to migrate to optimize-plugin, you'll need to move your babel configuration into a .babelrc or babel.config.js file ...optimize-plugin only uses your babel configuration when generating modern bundles.

However, both configFile and babelrc are set to false:

const modern = await babel.transformAsync(source, {
configFile: false,
babelrc: false,

This should stop any config files from being loaded, AFAIK. Am I misunderstanding something, or are the docs outdated perhaps?

errored out during transformation TypeError: /PROJECT/pages/404.js: Cannot read property 'constant' of undefined

Hi there 👋

I ran into this issue when adding optimize-plugin to my nextjs project.

$ next build
> [PWA] PWA support is disabled
> [PWA] PWA support is disabled
info  - Using external babel configuration from /PROJECT/.babelrc
[OptimizePlugin] Detected core-js version 3
[OptimizePlugin] Completed in 4ms.
       4ms: Optimize Assets
No polyfills bundle was created.
[OptimizePlugin] Completed in 1ms.
       1ms: Optimize Assets
No polyfills bundle was created.
errored out during transformation  TypeError: /PROJECT/pages/404.js: Cannot read property 'constant' of undefined
    at PluginPass.FunctionExpression|FunctionDeclaration (/PROJECT/node_modules/babel-preset-modernize/dist/plugins/transform-iife-arrows/index.js:1:424)
    at newFn (/PROJECT/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/visitors.js:175:21)
    at NodePath._call (/PROJECT/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/context.js:55:20)
    at NodePath.call (/PROJECT/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/context.js:42:17)
    at NodePath.visit (/PROJECT/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/context.js:92:31)
    at TraversalContext.visitQueue (/PROJECT/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/context.js:115:16)
    at TraversalContext.visitMultiple (/PROJECT/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/context.js:79:17)
    at TraversalContext.visit (/PROJECT/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/context.js:141:19)
    at Function.traverse.node (/PROJECT/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/index.js:82:17)
    at NodePath.visit (/PROJECT/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/context.js:99:18) {
  type: 'TypeError',
  code: 'BABEL_TRANSFORM_ERROR'
}
info  - Creating an optimized production build
Failed to compile.

TypeError: /PROJECT/pages/404.js: Cannot read property 'constant' of undefined


> Build error occurred
Error: > Build failed because of webpack errors
    at build (/PROJECT/node_modules/next/dist/build/index.js:15:918)
    at runMicrotasks (<anonymous>)

babel.rc

{
    "env": {
        "development": {
            "presets": ["next/babel", "@emotion/babel-preset-css-prop"],
            "plugins": ["@emotion", "date-fns", "transform-react-remove-prop-types"]
        },
        "production": {
            "presets": ["next/babel", "@emotion/babel-preset-css-prop"],
            "plugins": ["@emotion", "date-fns", "transform-react-remove-prop-types"]
        }
    }
}

package.json

  "dependencies": {
    "@apollo/react-hooks": "^3.1.5",
    "@apollo/react-ssr": "^3.1.5",
    "@charlietango/use-focus-trap": "^1.2.10",
    "@cometchat-pro/chat": "2.0.10",
    "@emotion/babel-plugin": "^11.0.0",
    "@emotion/babel-preset-css-prop": "^11.0.0",
    "@emotion/react": "^11.1.1",
    "@emotion/styled": "^11.0.0",
    "@next/bundle-analyzer": "^10.0.3",
    "@popmotion/popcorn": "^0.4.4",
    "@types/node": "^14.0.1",
    "@types/react": "^16.9.35",
    "apollo-cache-inmemory": "^1.6.6",
    "apollo-client": "^2.6.9",
    "apollo-link-context": "^1.0.20",
    "apollo-link-http": "^1.5.17",
    "apollo-upload-client": "^13.0.0",
    "cloudinary-core": "^2.8.2",
    "cron": "^1.8.2",
    "date-fns": "^2.13.0",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "framer-motion": "^1.10.3",
    "graphql": "^15.0.0",
    "graphql-tag": "^2.10.3",
    "helmet": "^4.2.0",
    "intersection-observer": "^0.12.0",
    "isomorphic-unfetch": "^3.0.0",
    "js-cookie": "^2.2.1",
    "mapbox-gl": "^2.0.0",
    "next": "^10.0.3",
    "next-cookies": "^2.0.3",
    "next-fonts": "^1.1.0",
    "next-i18next": "^7.0.1",
    "next-pwa": "^3.1.5",
    "node-cron": "^2.0.3",
    "query-string": "^6.12.1",
    "react": "^17.0.1",
    "react-beautiful-dnd": "^13.0.0",
    "react-date-range": "^1.0.3",
    "react-dom": "^17.0.1",
    "react-dropzone": "^11.0.1",
    "react-html-parser": "^2.0.2",
    "react-intersection-observer": "^8.26.2",
    "react-select": "^3.1.0",
    "typescript": "^3.9.2",
    "use-media": "^1.4.0"
  },
  "devDependencies": {
    "@babel/core": "^7.12.9",
    "@testing-library/cypress": "^6.0.0",
    "@typescript-eslint/eslint-plugin": "^2.33.0",
    "@typescript-eslint/parser": "^2.33.0",
    "babel-plugin-date-fns": "^2.0.0",
    "babel-plugin-jsx-remove-data-test-id": "^2.1.3",
    "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
    "cypress": "^4.5.0",
    "cypress-file-upload": "^4.0.6",
    "duplicate-package-checker-webpack-plugin": "^3.0.0",
    "eslint": "^7.0.0",
    "eslint-config-prettier": "^6.11.0",
    "eslint-plugin-prettier": "^3.1.3",
    "eslint-plugin-react": "^7.20.0",
    "optimize-plugin": "^1.0.0",
    "prettier": "^2.0.5",
    "webpackbar": "^4.0.0"
  }

next.config.js

            webpack: config => {
                config.plugins.push(new OptimizePlugin());

                return config;
            },

Any idea?

errored out during transformation Cannot read property 'constant' of undefined

I am using this plugin in documentation site created using vuepress (Vue based static site generator)

// .vuepress/config.js

const OptimizePlugin = require('optimize-plugin');
configureWebpack: {
    plugins: [
      new OptimizePlugin({
        downlevel: false,
      })
    ],
  }

Error Details

errored out during transformation  TypeError: C:\dev\jamkudoc\1.server-bundle.js: Cannot read property 'constant' of undefined
    at PluginPass.FunctionExpression|FunctionDeclaration (C:\dev\jamkudoc\node_modules\babel-preset-modernize\dist\plugins\transform-iife-arrows\index.js:1:424)
    at newFn (C:\dev\jamkudoc\node_modules\optimize-plugin\node_modules\@babel\traverse\lib\visitors.js:175:21)
    at NodePath._call (C:\dev\jamkudoc\node_modules\optimize-plugin\node_modules\@babel\traverse\lib\path\context.js:55:20)
    at NodePath.call (C:\dev\jamkudoc\node_modules\optimize-plugin\node_modules\@babel\traverse\lib\path\context.js:42:17)
    at NodePath.visit (C:\dev\jamkudoc\node_modules\optimize-plugin\node_modules\@babel\traverse\lib\path\context.js:92:31)
    at TraversalContext.visitQueue (C:\dev\jamkudoc\node_modules\optimize-plugin\node_modules\@babel\traverse\lib\context.js:115:16)
    at TraversalContext.visitMultiple (C:\dev\jamkudoc\node_modules\optimize-plugin\node_modules\@babel\traverse\lib\context.js:79:17)
    at TraversalContext.visit (C:\dev\jamkudoc\node_modules\optimize-plugin\node_modules\@babel\traverse\lib\context.js:141:19)
    at Function.traverse.node (C:\dev\jamkudoc\node_modules\optimize-plugin\node_modules\@babel\traverse\lib\index.js:82:17)
    at NodePath.visit (C:\dev\jamkudoc\node_modules\optimize-plugin\node_modules\@babel\traverse\lib\path\context.js:99:18) {
  type: 'TypeError',
  code: 'BABEL_TRANSFORM_ERROR'

Some questions about integrating with HtmlWebpackPlugin babel-env and browserslist.

It's more of a query than an issue, but your README doesn't contain the documentation for this, and I have some questions about integration with an existing codebase, having seen your plugin on https://estimator.dev/:

  1. How would you suggest generating the HTML template for HtmlWebpackPlugin? We currently have several of the following, as an example:
new HtmlWebpackPlugin({
        inject: false,
        filename: '../../../Heritage.HE.Web/Views/Partials/Tags/_HeadTags.cshtml',
        template: './src/templates/headTags.html',
      }),
  1. Do our .babelrc presets and plugin file have to be separated out instead of passing it as an integrated config option (our current codebase passes that in through config)? So you know what I mean, this is our current babel config - we use something that's a little complex in terms of plugins and presets, thanks to some react components.
{
  test: /\.js$/,
  exclude: /node_modules/,
  use: {
    loader: 'babel-loader',
    options: {
      plugins: [
        '@babel/plugin-proposal-function-bind',
        ['@babel/plugin-proposal-class-properties', { 'loose': false }],
        '@babel/plugin-syntax-dynamic-import',
      ],
      presets: [
        ['@babel/preset-env', {
          corejs: 3.6,
          useBuiltIns: 'usage'
        }],
        '@babel/preset-react',
      ],
    },
  },
},
  1. We currently define our browswerslist in our package.json for babel-env to chew on. If we defined such a list in the .babelrc, would it have an effect and would it affect the module or nomodule bundle?

Cannot read property 'arguments' of undefined

Build completed in 78.241s


Build completed in 0s

TypeError: /Users/weiran/repo/dian/honor/assets/~containers~a~count~cash-114e7fb5.js: Cannot read property 'arguments' of undefined
    at NodePath._getKey (/Users/weiran/repo/dian/honor/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/family.js:194:25)
    at NodePath.get (/Users/weiran/repo/dian/honor/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/family.js:186:17)
    at NodePath._getPattern (/Users/weiran/repo/dian/honor/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/family.js:226:21)
    at NodePath.get (/Users/weiran/repo/dian/honor/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/family.js:188:17)
    at visitParam (/Users/weiran/repo/dian/honor/node_modules/babel-preset-modernize/dist/plugins/transform-destructuring/index.js:1:5836)
    at PluginPass.VariableDeclarator (/Users/weiran/repo/dian/honor/node_modules/babel-preset-modernize/dist/plugins/transform-destructuring/index.js:1:7332)
    at newFn (/Users/weiran/repo/dian/honor/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/visitors.js:175:21)
    at NodePath._call (/Users/weiran/repo/dian/honor/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/context.js:55:20)
    at NodePath.call (/Users/weiran/repo/dian/honor/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/context.js:42:17)
    at NodePath.visit (/Users/weiran/repo/dian/honor/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/context.js:92:31)
error Command failed with exit code 1.

SyntaxError 'with' in strict mode

@developit Hi, I removed the babel loader previously configured in webpack
image
And added optimize-plugin to plugins
image
The result shows 「No polyfills bundle was created」, and keeps reporting 「SyntaxError」 at the same time
image
Is there something wrong with my configuration?

Not a webpack bundle unhandled rejection on every chunk

Multi entry webpack 4 (latest) configuration on Node 14.
It does this for every chunk

errored out during transformation  Error: /Users/claudio/Projects/loom/js/404-3594367e1117c0d15bb5.js: Not a webpack bundle
    at mod (/Users/claudio/Projects/loom/node_modules/optimize-plugin/dist/worker.js:203:15)
    at /Users/claudio/Projects/loom/node_modules/optimize-plugin/dist/worker.js:211:9
    at Array.forEach (<anonymous>)
    at getWebpackModules (/Users/claudio/Projects/loom/node_modules/optimize-plugin/dist/worker.js:207:10)
    at getWebpackBootstrap (/Users/claudio/Projects/loom/node_modules/optimize-plugin/dist/worker.js:85:25)
    at /Users/claudio/Projects/loom/node_modules/optimize-plugin/dist/worker.js:256:29
    at Array.forEach (<anonymous>)
    at PluginPass.Program (/Users/claudio/Projects/loom/node_modules/optimize-plugin/dist/worker.js:255:26)
    at newFn (/Users/claudio/Projects/loom/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/visitors.js:175:21)
    at NodePath._call (/Users/claudio/Projects/loom/node_modules/optimize-plugin/node_modules/@babel/traverse/lib/path/context.js:55:20) {
  type: 'Error',
  code: 'BABEL_TRANSFORM_ERROR'
}

Any pointers? 🙏

Support Webpack 5

I added the optimize-plugin to my webpack configuration as described:

const OptimizePlugin = require('optimize-plugin');
module.exports = {
 plugins: [
    new HtmlWebpackPlugin(),...]
...
}

Then when I run Webpack I got the error:

> webpack

(node:24812) [DEP_WEBPACK_COMPILATION_OPTIMIZE_CHUNK_ASSETS] DeprecationWarning: optimizeChunkAssets is deprecated (use Compilation.hook.processAssets instead and use
one of Compilation.PROCESS_ASSETS_STAGE_* as stage option)
(Use `node --trace-deprecation ...` to show where the warning was created)
[OptimizePlugin] Detected core-js version 3
[OptimizePlugin] Completed in 0ms.
      - ms: Optimize Assets
No polyfills bundle was created.
[OptimizePlugin] Completed in 3712ms.
     937ms: Optimize Assets
     936ms:  └ bundle.js
           719ms: modern
            23ms: modern-minify
            78ms: legacy
     535ms: Bundle Polyfills
           326ms: parse
           157ms: generate
polyfills.legacy.js is 2.41kB and bundles 1 polyfills:
└ Used by bundle.legacy.js:
  └ core-js/modules/es.object.define-property
[webpack-cli] HookWebpackError: Cannot read property 'sections' of null
    at makeWebpackError (C:\Dev\Work\testTs\node_modules\webpack\lib\HookWebpackError.js:49:9)
    at C:\Dev\Work\testTs\node_modules\webpack\lib\Compilation.js:2000:11
    at eval (eval at create (C:\Dev\Work\testTs\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:31:1)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
-- inner error --
TypeError: Cannot read property 'sections' of null
    at new SourceMapConsumer (C:\Dev\Work\testTs\node_modules\source-map\lib\source-map-consumer.js:20:20)
    at SourceMapSource.node (C:\Dev\Work\testTs\node_modules\optimize-plugin\node_modules\webpack-sources\lib\SourceMapSource.js:32:62)
    at SourceMapSource.proto.sourceAndMap (C:\Dev\Work\testTs\node_modules\optimize-plugin\node_modules\webpack-sources\lib\SourceAndMapMixin.js:29:18)
    at C:\Dev\Work\testTs\node_modules\terser-webpack-plugin\dist\index.js:323:27
    at C:\Dev\Work\testTs\node_modules\p-try\index.js:4:10
    at new Promise (<anonymous>)
    at pTry (C:\Dev\Work\testTs\node_modules\p-try\index.js:3:37)
    at run (C:\Dev\Work\testTs\node_modules\terser-webpack-plugin\node_modules\p-limit\index.js:24:18)
    at C:\Dev\Work\testTs\node_modules\terser-webpack-plugin\node_modules\p-limit\index.js:46:18
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
caused by plugins in Compilation.hooks.processAssets
TypeError: Cannot read property 'sections' of null
    at new SourceMapConsumer (C:\Dev\Work\testTs\node_modules\source-map\lib\source-map-consumer.js:20:20)
    at SourceMapSource.node (C:\Dev\Work\testTs\node_modules\optimize-plugin\node_modules\webpack-sources\lib\SourceMapSource.js:32:62)
    at SourceMapSource.proto.sourceAndMap (C:\Dev\Work\testTs\node_modules\optimize-plugin\node_modules\webpack-sources\lib\SourceAndMapMixin.js:29:18)
    at C:\Dev\Work\testTs\node_modules\terser-webpack-plugin\dist\index.js:323:27
    at C:\Dev\Work\testTs\node_modules\p-try\index.js:4:10
    at new Promise (<anonymous>)
    at pTry (C:\Dev\Work\testTs\node_modules\p-try\index.js:3:37)
    at run (C:\Dev\Work\testTs\node_modules\terser-webpack-plugin\node_modules\p-limit\index.js:24:18)
    at C:\Dev\Work\testTs\node_modules\terser-webpack-plugin\node_modules\p-limit\index.js:46:18
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! [email protected] buildW: `webpack`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the [email protected] buildW script.

Can you help, please?
Thanks

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.