{"id":19763281,"url":"https://github.com/webdiscus/webpack-remove-empty-scripts","last_synced_at":"2025-04-05T05:06:44.164Z","repository":{"id":37931107,"uuid":"306423796","full_name":"webdiscus/webpack-remove-empty-scripts","owner":"webdiscus","description":"Webpack plugin to remove empty scripts generated by usage only a style without JS in entry.","archived":false,"fork":false,"pushed_at":"2024-01-18T16:18:10.000Z","size":845,"stargazers_count":105,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-29T04:07:10.922Z","etag":null,"topics":["css","entity","entrypoint","js","mini-css-extract-plugin","plugin","script","style","webpack"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webdiscus.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":"biodiscus","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-10-22T18:18:27.000Z","updated_at":"2025-03-28T05:18:22.000Z","dependencies_parsed_at":"2024-01-18T17:56:34.935Z","dependency_job_id":"55a054f5-f3c8-46d3-8638-ddab86025dad","html_url":"https://github.com/webdiscus/webpack-remove-empty-scripts","commit_stats":{"total_commits":19,"total_committers":5,"mean_commits":3.8,"dds":0.368421052631579,"last_synced_commit":"90dc75f18088cd4026c0c76cfe1ee838f6a17fe4"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdiscus%2Fwebpack-remove-empty-scripts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdiscus%2Fwebpack-remove-empty-scripts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdiscus%2Fwebpack-remove-empty-scripts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdiscus%2Fwebpack-remove-empty-scripts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webdiscus","download_url":"https://codeload.github.com/webdiscus/webpack-remove-empty-scripts/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247289428,"owners_count":20914464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","entity","entrypoint","js","mini-css-extract-plugin","plugin","script","style","webpack"],"created_at":"2024-11-12T04:08:43.209Z","updated_at":"2025-04-05T05:06:44.146Z","avatar_url":"https://github.com/webdiscus.png","language":"JavaScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"120\" height=\"120\" src=\"https://cdn.worldvectorlogo.com/logos/logo-javascript.svg\"\u003e\n  \u003ca href=\"https://webpack.js.org/\"\u003e\n    \u003cimg width=\"120\" height=\"120\" vspace=\"\" hspace=\"25\" src=\"https://cdn.rawgit.com/webpack/media/e7485eb2/logo/icon-square-big.svg\"\u003e\n  \u003c/a\u003e\n  \u003ch1\u003e\u003ca href=\"https://github.com/webdiscus/webpack-remove-empty-scripts\"\u003ewebpack-remove-empty-scripts\u003c/a\u003e\u003c/h1\u003e\n  \u003cdiv\u003eThe Webpack plugin removes empty JavaScript files generated when using styles.\u003c/div\u003e\n\u003c/div\u003e\n\n---\n[![npm](https://img.shields.io/npm/v/webpack-remove-empty-scripts?logo=npm\u0026color=brightgreen \"npm package\")](https://www.npmjs.com/package/webpack-remove-empty-scripts \"download npm package\")\n[![node](https://img.shields.io/node/v/webpack-remove-empty-scripts)](https://nodejs.org)\n[![node](https://img.shields.io/github/package-json/dependency-version/webdiscus/webpack-remove-empty-scripts/peer/webpack)](https://webpack.js.org/)\n[![Test](https://github.com/webdiscus/webpack-remove-empty-scripts/actions/workflows/test.yml/badge.svg)](https://github.com/webdiscus/webpack-remove-empty-scripts/actions/workflows/test.yml)\n[![codecov](https://codecov.io/gh/webdiscus/webpack-remove-empty-scripts/branch/master/graph/badge.svg)](https://codecov.io/gh/webdiscus/webpack-remove-empty-scripts)\n[![node](https://img.shields.io/npm/dm/webpack-remove-empty-scripts)](https://www.npmjs.com/package/webpack-remove-empty-scripts)\n\n## The problem this plugin solves\n\nWebpack generates a JS file for each resource defined in the entry option.\n\nFor example, you have a style file in the `entry` option:\n```js\nmodule.exports = {\n  entry: {\n    styles: './styles.scss',\n  },\n}\n```\n\nThe following files are generated in the output directory:\n\n```\ndist/styles.css\ndist/styles.js // \u003c= unexpected empty JS file\n```\n\nThis plugin removes generated empty JS files.\n\n\u003e **Warning**\n\u003e\n\u003e This plugin is the `Crutch` 🩼 for the [mini-css-extract-plugin issue](https://github.com/webpack-contrib/mini-css-extract-plugin/issues/151).\\\n\u003e The `mini-css-extract-plugin` extract CSS, but not eliminate a generated empty JS file.\n\u003e\n\n\n\u003e **Note**\n\u003e \n\u003e This plugin is compatible with `Webpack 5`. For `Webpack 4` use [webpack-fix-style-only-entries](https://github.com/fqborges/webpack-fix-style-only-entries).\n\n## Install\n```console\nnpm install webpack-remove-empty-scripts --save-dev\n```\n\n## Usage with mini-css-extract-plugin\nThe example of webpack.config.js:\n```javascript\nconst MiniCssExtractPlugin = require('mini-css-extract-plugin');\nconst RemoveEmptyScriptsPlugin = require('webpack-remove-empty-scripts');\n\nmodule.exports = {\n  entry: {\n    'main' : './app/main.js',\n    'styles': ['./common/styles.css', './app/styles.css']\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.css$/,\n        use: [\n          MiniCssExtractPlugin.loader,\n          'css-loader',\n        ]\n      },\n    ]\n  },\n  plugins: [\n    // removes the empty `.js` files generated by webpack\n    new RemoveEmptyScriptsPlugin(),\n    new MiniCssExtractPlugin({\n      filename: '[name].[chunkhash:8].css',\n    }),\n  ],\n};\n```\n\nSee the [plugin options](#options).\n\n---\n\n## Usage with html-webpack-plugin\n\n\u003e ✅ It is recommended to use the new powerful [html-bundler-webpack-plugin][html-bundler-webpack-plugin] instead of:\n\u003e \n\u003e - html-webpack-plugin\n\u003e - mini-css-extract-plugin\n\u003e - webpack-remove-empty-scripts\n\n### Highlights of html-bundler-webpack-plugin\n\n- **Prevents generating unexpected empty JS files.**\n- An [entry point](https://github.com/webdiscus/html-bundler-webpack-plugin#option-entry) can be an HTML template.\n- Source **scripts** and **styles** can be specified directly in HTML using `\u003cscript\u003e` and `\u003clink\u003e`.\n- Extracts JS and CSS from their sources specified in HTML.\n- Resolving [source](https://github.com/webdiscus/html-bundler-webpack-plugin#loader-option-sources) assets specified in standard attributes `href` `src` `srcset` etc.\n- Inline [JS](https://github.com/webdiscus/html-bundler-webpack-plugin#recipe-inline-js), [CSS](https://github.com/webdiscus/html-bundler-webpack-plugin#recipe-inline-css), [SVG](https://github.com/webdiscus/html-bundler-webpack-plugin#recipe-inline-image), [PNG](https://github.com/webdiscus/html-bundler-webpack-plugin#recipe-inline-image) without additional plugins and loaders.\n- Support for [template engines](https://github.com/webdiscus/html-bundler-webpack-plugin#recipe-template-engine) such as Eta, EJS, Handlebars, Nunjucks, LiquidJS and others.\n\n\n\n### Simple usage example\n\nAdd source scripts and styles directly to HTML:\n\n```html\n\u003chtml\u003e\n\u003chead\u003e\n  \u003c!-- specify source styles --\u003e\n  \u003clink href=\"./style.scss\" rel=\"stylesheet\"\u003e\n  \u003c!-- specify source scripts here and/or in body --\u003e\n  \u003cscript src=\"./main.js\" defer=\"defer\"\u003e\u003c/script\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n  \u003ch1\u003eHello World!\u003c/h1\u003e\n  \u003c!-- specify source images --\u003e\n  \u003cimg src=\"./logo.png\"\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\nThe generated HTML contains the output filenames of the processed assets:\n\n```html\n\u003chtml\u003e\n\u003chead\u003e\n  \u003clink href=\"assets/css/style.05e4dd86.css\" rel=\"stylesheet\"\u003e\n  \u003cscript src=\"assets/js/main.f4b855d8.js\" defer=\"defer\"\u003e\u003c/script\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n  \u003ch1\u003eHello World!\u003c/h1\u003e\n  \u003cimg src=\"assets/img/logo.58b43bd8.png\"\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\nAdd the HTML templates in the `entry` option:\n\n```js\nconst HtmlBundlerPlugin = require('html-bundler-webpack-plugin');\n\nmodule.exports = {\n  plugins: [\n    new HtmlBundlerPlugin({\n      // define a relative or absolute path to template pages\n      entry: 'src/views/',\n      // OR define templates manually\n      entry: {\n        index: 'src/views/home.html', // =\u003e dist/index.html\n        'news/sport': 'src/views/news/sport/index.html', // =\u003e dist/news/sport.html\n      },\n    }),\n  ],\n  // ... loaders for styles, images, etc.\n};\n```\n\n---\n\n\u003ca id=\"options\" name=\"options\" href=\"#options\"\u003e\u003c/a\u003e\n## Options\n\n### `enabled`\nType: `boolean` Default: `true`\u003cbr\u003e\nEnable / disable the plugin.\n**Tip:** Use `disable` for development to improve performance.\n\n### `stage`\nType: `number`\u003cbr\u003e\nValues:\n- `RemoveEmptyScriptsPlugin.STAGE_BEFORE_PROCESS_PLUGINS` (default)\\\n  Remove empty scripts `before` processing other plugins.\\\n  For example, exact this stage needs for properly work of the `webpack-manifest-plugin`.\n- `RemoveEmptyScriptsPlugin.STAGE_AFTER_PROCESS_PLUGINS`\\\n  Remove empty scripts `after` processing all other plugins.\\\n  For example, exact this stage needs for properly work of the `@wordpress/dependency-extraction-webpack-plugin`.\n\nWebpack plugins use different stages for their functionality.\nFor properly work other plugins can be specified the `stage` when should be removed empty scripts: before or after processing of other Webpack plugins.\n\nSee [usage example](#usage-stage-optoion).\n\n\u003e **Warning**\n\u003e \n\u003e Because `webpack-manifest-plugin` and `@wordpress/dependency-extraction-webpack-plugin` needs different stages\n\u003e both plugins can't be used together with `RemoveEmptyScriptsPlugin` at one configuration.\n\n### `extensions`\nType: `RegExp` Default: `/\\.(css|scss|sass|less|styl)([?].*)?$/` \nNote: the Regexp should have the query part at end `([?].*)?$` to match assets like `style.css?key=val` \u003cbr\u003e\nType: `string[]` Default: `['css', 'scss', 'sass', 'less', 'styl']`. It is automatically converted to type `RegExp`. \\\nSearch for empty js files in source files only with these extensions.\n\n### `ignore`\nType: `string | RegExp | string[] | RegExp[]` Default: `null`\u003cbr\u003e\nIgnore source files.\n\n### `remove`\nType: `RegExp` Default: `/\\.(js|mjs)$/`\u003cbr\u003e\nRemove generated scripts.\n\n### `verbose`\nType: `boolean` Default: `false`\u003cbr\u003e\nShow process information.\n\n## Recipes\n\n### Show logs to console by development\n```js\nconst isProduction = process.env.NODE_ENV === 'production';\nnew RemoveEmptyScriptsPlugin({ verbose: isProduction !== true })\n```\n\n### Disable plugin by development to improve performance\n```js\nconst isProduction = process.env.NODE_ENV === 'production';\nnew RemoveEmptyScriptsPlugin({ enabled: isProduction === true })\n```\n\n\u003ca id=\"usage-stage-optoion\" name=\"usage-stage-optoion\" href=\"#usage-stage-optoion\"\u003e\u003c/a\u003e\n### Specify stage for properly work some plugins\nFor example, using `@wordpress/dependency-extraction-webpack-plugin` the empty scripts must be removed `after` processing all plugins.\n\n```js\nconst path = require('path');\nconst DependencyExtractionWebpackPlugin = require('@wordpress/dependency-extraction-webpack-plugin');\nconst MiniCssExtractPlugin = require('mini-css-extract-plugin');\nconst RemoveEmptyScriptsPlugin = require('webpack-remove-empty-scripts');\n\nmodule.exports = {\n  output: {\n    path: path.join(__dirname, 'public'),\n  },\n  entry: {\n    'main': './src/sass/main.scss',\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.scss$/,\n        use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'],\n      },\n    ],\n  },\n  plugins: [\n    new MiniCssExtractPlugin(),\n    new DependencyExtractionWebpackPlugin(),\n    new RemoveEmptyScriptsPlugin({\n      stage: RemoveEmptyScriptsPlugin.STAGE_AFTER_PROCESS_PLUGINS, // \u003c- use this option\n    }),\n  ],\n};\n```\n\n### Identify only `.foo` and `.bar` extensions as styles\n\n```js\nnew RemoveEmptyScriptsPlugin({ extensions: /\\.(foo|bar)$/ })\n```\n\n### Usage a javascript entry to styles\nGive an especial extension to your file, for example `.css.js`:\n```js\nnew RemoveEmptyScriptsPlugin({ extensions: /\\.(css.js)$/ })\n```\n\n### Remove generated scripts `*.js` `*.mjs` except `*.rem.js` `*.rem.mjs`\n```js\nnew RemoveEmptyScriptsPlugin({ remove: /(?\u003c!\\.rem)\\.(js|mjs)$/ })\n```\n\n### Recursive ignore all js files from directory, for example `my-workers/`\n```js\nnew RemoveEmptyScriptsPlugin({\n  ignore: [\n    /my-workers\\/.+\\.js$/,\n  ]\n})\n```\n\n### Usage webpack-hot-middleware\n```js\nnew RemoveEmptyScriptsPlugin({\n  ignore: [\n    'webpack-hot-middleware',\n  ]\n})\n```\n[See the test case](https://github.com/webdiscus/webpack-remove-empty-scripts/blob/master/test/cases/css-entry-with-ignored-hmr/webpack.config.js).\n\n## Testing\n\n`npm run test` will run the unit and integration tests.\\\n`npm run test:coverage` will run the tests with coverage.\n\n\n## Who use this plugin\n\n\u003ca href='https://github.com/mozilla'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/131524?s=42\u0026v=4' title='Mozilla'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/mozmeao'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/17653958?s=42\u0026v=4' title='Mozilla Marketing'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/OpenSourceOrg'\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/u/5924333?s=42\u0026v=4\" title='Open Source Org'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/pypi/warehouse'\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/u/2964877?s=42\u0026v=4\" title='PyPi'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/preactjs'\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/u/26872990?s=42\u0026v=4\" title='Preact'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/rails/jsbundling-rails/blob/main/docs/switch_from_webpacker.md'\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/u/4223?s=42\u0026v=4\" title='Rails'\u003e\n\u003c/a\u003e\n\u003ca href='https://www.cisco.com/c/dam/en_us/about/doing_business/open_source/docs/slido-test-2206-1655452418.pdf'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/1376999?s=42\u0026v=4' title='Cisco'\u003e\n\u003c/a\u003e\n\u003ca href='https://gitlab.com/gitlab-com/www-gitlab-com/-/blob/master/webpack.config.js'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/22105643?s=42\u0026v=4' title='Cisco'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/jenkinsci'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/107424?s=42\u0026v=4' title='Jenkins'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/coinbase'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/1885080?s=42\u0026v=4' title='Coinbase'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/PrestaShop'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/2815696?s=42\u0026v=4' title='PrestaShop'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/getsentry'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/1396951?s=42\u0026v=4' title='Sentry'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/wikimedia'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/56668?s=42\u0026v=4' title='Wikimedia'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/TYPO3GmbH'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/24472665?s=42\u0026v=4' title='TYPO3 GmbH'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/woocommerce'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/473596?s=42\u0026v=4' title='WooCommerce'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/plentymarkets'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/3379035?s=42\u0026v=4' title='plentymarkets'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/standardnotes'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/24537496?s=42\u0026v=4' title='Standard Notes'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/roots'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/4986074?s=42\u0026v=4' title='Roots'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/ampproject'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/14114390?s=42\u0026v=4' title='AMP'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/awesomemotive'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/8514352?s=42\u0026v=4' title='Awesome Motive'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/10up'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/3358927?s=42\u0026v=4' title='10up'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/collab-project'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/347599?s=42\u0026v=4' title='Collab project'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/jspsych'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/16901698?s=42\u0026v=4' title='jsPsych'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/grandnode'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/16118376?s=42\u0026v=4' title='GrandNode'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/TheOdinProject'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/4441966?s=42\u0026v=4' title='The Odin Project'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/ministryofjustice'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/2203574?s=42\u0026v=4' title='Ministry of Justice, London'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/helsingborg-stad'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/12846276?s=42\u0026v=4' title='Helsingborg Stad'\u003e\n\u003c/a\u003e\n\u003ca href='https://github.com/City-of-Helsinki'\u003e\n  \u003cimg src='https://avatars.githubusercontent.com/u/1875564?s=42\u0026v=4' title='City of Helsinki'\u003e\n\u003c/a\u003e\n\n## Also See\n\n- [ansis][ansis] - The Node.js library for ANSI color styling of text in terminal.\n- [html-bundler-webpack-plugin][html-bundler-webpack-plugin] - HTML bundler plugin for webpack handels a template as an entry point, extracts CSS and JS from their sources specified in HTML, supports template engines like Eta, EJS, Handlebars, Nunjucks and others \"out of the box\".\n- [pug-plugin][pug-plugin] - plugin for Webpack compiles Pug files to HTML, extracts CSS and JS from their sources specified in Pug.\n- [pug-loader][pug-loader] - loader for Webpack renders Pug to HTML or template function. Optimized for using with Vue.\n\n## License\n[ISC](https://github.com/webdiscus/webpack-remove-empty-scripts/blob/master/LICENSE)\n\n\u003c!-- prettier-ignore-start --\u003e\n[ansis]: https://github.com/webdiscus/ansis\n[pug-plugin]: https://github.com/webdiscus/pug-plugin\n[pug-loader]: https://github.com/webdiscus/pug-loader\n[html-bundler-webpack-plugin]: https://github.com/webdiscus/html-bundler-webpack-plugin\n\u003c!-- prettier-ignore-end --\u003e\n","funding_links":["https://patreon.com/biodiscus"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdiscus%2Fwebpack-remove-empty-scripts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebdiscus%2Fwebpack-remove-empty-scripts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdiscus%2Fwebpack-remove-empty-scripts/lists"}