0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Chromeの拡張機能でimportが使えずWebpackに助けてもらった

0
Last updated at Posted at 2025-07-03

1. この記事の目的

  • Chrome拡張機能を使用した際にWebpackを使わなければならなかった理由の説明
  • WebpackでJSファイルをバンドルするために行った手順

2. なぜ、Webpackが必要だったか

結論から言いますとChromeの拡張機能のコードの中では、JavaScriptのimportが使えなかったからです。

実際に私はいくつかのJavaScriptファイルを用意してmain.jsから他のファイルをモジュールとして読み込むような構成でツールを作っていました。

main.js
// main.js
import { startTracking } from "./time_script.js";
import { TRACKED_URLS } from "./config.js";


  const currentURL = location.href;
  const matched = TRACKED_URLS.some((targetURL) =>
    currentURL.startsWith(targetURL)
  );

  if (matched) {
    startTracking();
  } else {
    console.log("メッセージ");
  }
});

import文 該当箇所
import { startTracking } from "./time_script.js";
import { TRACKED_URLS } from "./config.js";

私はChromeの拡張機能でimportが使えないなんてことは全然想定していなかったので、そのままパッケージを拡張機能としてChromeにアップロードしたところ、以下のようなエラーメッセージが表示されました、、

Uncaught SyntaxError: Cannot use import statement outside a module

要するに、import文は使えないということでした。

なので、拡張機能として正しく動作させるにはJavaScriptのファイルを1つにまとめ、その中にすべての処理を記述する必要がありました。

そこで使用したのがWebpackです。

3. Webpackとは何か?

Webpackとは簡単にいうと複数のJavaScriptファイルを1つにまとめてくれるツール。

JavaScriptだけでなくて、画像やCSSなどもバンドルすることができる。
(バンドル = ひとまとめにする)

本来であれば、Webpackを利用してファイルをまとめる最大の利点はWebページのパフォーマンスを向上させること。

例えば、3つのJavaScriptファイルを1つのJavaScriptファイルにバンドルすると、Webページを読み込む際にブラウザは1つのJavaScriptファイルを読み込めば良いことになるので、読み込むファイルの数が2つ減り、それによりWebサイトの表示が早くなる。

ただ、今回私が利用した最大の目的はWebページのパフォーマンスではなくて、JavaScriptのファイルを1つにまとめられるという点

1つ前の章でお伝えしたように、Chrome拡張機能ではimport文が使えないので、複数のJavaScriptファイルを連携させることができない。

そこで複数のJavaScriptファイルをWebpackにまとめてもらい、それを拡張機能として読み込むことで無事に動作させることができた。

4. Webpackでバンドルするために行った手順

1. ターミナルで拡張機能のディレクトリへ移動し以下のコマンドを入力

コマンド
npm install --save-dev webpack webpack-cli

このコマンドでWebpackを導入する

WebpackはNode.js上で動作するので、前提としてNode.jsがインストールされている必要があります!

2. 拡張機能のディレクトリ内に webpack.config.js を作成

webpack.config.js
// webpack.config.js
module.exports = {
  entry: "./src/main.js",
  output: {
    filename: "main.bundle.js",
    path: path.resolve(__dirname, "dist")
  },
  mode: "production"
};

WebpackがJavaScriptファイルをバンドルする際に参照する設定ファイル。

大切な設定事項

  • entry : 起点となるJavaScriptファイルを記述
  • filename : バンドルされたJavaScriptファイルが出力される際のファイル名

3. ターミナルで以下のコマンドを入力

コマンド
npx webpack

このコマンドによりWebpackによるバンドルが実行されてひとまとめになった状態のJavaScriptファイルが出力される

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?