Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Officially support more elaborate externals

オープン
#477 コメント 11 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
javascript, rollup
領域
build-system, cli

調査の方向性

まず src/index.js#L387-L388 の external と exclude の処理を確認し、その後、issue で提案されている --external と --external-glob のコマンドライン動作を確認します。選択した設定セマンティクスが実装およびドキュメント化され、依存関係と標準外の import がどのように扱われるかも含まれていれば完了です。

索引モデルが issue の本文から書いたものです。

説明

enhancement :rocket: Feature Request

This is a feature request/Proposal

As a user of microbundle I want ways to configure which imports are to be considered external.
In order to reduce my bundle size and also to work with non-standard imports (images, fonts, ...) that are not supported by microbundle.

Status Quo

  1. As described in https://github.com/developit/microbundle/issues/283#issuecomment-523879163, there is a (I guess unoffical) way to use regex in the --exclude flag, which can be used to have rollup treat specific import statements as external.
  2. Presence of the --exclude flag triggers if pkg.dependencies are treated as external or not (see index.js#L387) I find that quite confusing and the behaviour is not documented.

Problem

Given I want to use --external .*/assets/.* to work with non-standard imports
And I also want all my dependencies to be excluded
Then I need to add all dependencies to --external causing code duplication and manual overhead.

Proposal

In order to fix the problem and reduce confusion I propose to have it work like this:

$ microbundle

Exclude dependencies, peerDependencies

$ microbundle --external .*/assets/.*

Exclude dependencies, peerDependencies and .*/assets/.*
And explicitly support regular expressions or globs under --external

$ microbundle --external .*/assets/.*,angular --include-dependencies

Exclude peerDependencies and .*/assets/.*
All normal dependencies ecxept angular are included in the bundle

Non-breaking alternative

I realize that the above proposal is really tied to my personal usecase of (miss-?)using --external for non-standard imports.
It would also introduce a potential pretty impactful breaking change (since users of microbundle might ship bundles that lack bundled dependencies).

Alternatively the current behaviour could stay as is, using regex in --external will be considered hacky. And we introduce a new, documented way to exclude assets:

$ microbundle --external-glob **/*.(jpg|png)

Exclude dependencies, peerDependencies and all imports matching **/*.(jpg|png)

$ microbundle --external angular --external-glob **/*.(jpg|png)

Exclude peerDependencies, angular, and all imports matching **/*.(jpg|png)


Let me know what you think about this. I would be really happy to implement the changes and provide a PR.

主要言語
JavaScript
スター
8.1k
フォーク
358
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

developit/microbundle のほかの issue

developit/microbundle の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。