0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

npmとWebpackを使ってjsライブラリをモジュール化し、効率的にバンドルする方法

Last updated at Posted at 2025-05-18

npmとWebpackを使ってJavaScriptライブラリをモジュール化し、効率的にバンドルする方法

従来の方法では、index.html、CSS、JavaScriptファイルを個別に用意し、Swiperの本体をGitHubなどからダウンロードして手動で読み込む形でスライダーを構築していました。

しかし、今回はモダンな開発手法を採用し、npm を使って Swiper や関連パッケージを管理したうえで、Webpack を使用して、モジュール化されたコードを効率的にバンドルし、開発環境を整備する方法を解説します。

従来の方法の特徴

  • 手動でライブラリを管理: SwiperやjQueryなどのライブラリをGitHubなどから手動でダウンロードし、index.html に直接読み込む形。
  • 依存関係の管理が煩雑: 他のライブラリやツールが増えると、バージョン管理や依存関係の更新が手動で行わなければならない。
  • 開発環境の自動化が難しい: 自動ビルドや最適化の設定は手動で行う必要があり、開発効率が低下しやすい。

新しい方法(npmとWebpackを使う方法)の特徴

  • モジュール化された依存関係の管理: 依存関係はnpmでインストールされ、package.json に管理されるため、ライブラリのアップデートやバージョン管理が簡単。
  • 自動化されたビルドプロセス: Webpackやその他のビルドツールを使って、Sassのコンパイル、JavaScriptの圧縮、画像の最適化などが自動で行われ、開発効率が大幅に向上。
  • パフォーマンス向上: 開発環境での最適化(コードスプリッティング、トリーニング)や、本番環境用のファイルを自動で圧縮して出力することができます。これにより、Webページの読み込み速度が向上します。
  • スケーラビリティの向上: モジュール化されたコードベースにより、チームでの開発や将来の機能追加が容易になります。新しいライブラリやツールの追加が簡単です。

以下の手順で、Swiperのスライダーが動作するindex.htmlページを作成し、Webpackを使用してバンドルする環境を構築できます。

1. プロジェクトの初期化

npm init -y

2. 必要なパッケージのインストール

npm install swiper webpack webpack-cli webpack-dev-server html-webpack-plugin style-loader css-loader --save-dev

3. プロジェクト構成

project-root/
├── src/
│   ├── index.js
│   ├── styles.css
├── dist/
├── index.html
├── webpack.config.js
├── package.json

4. webpack.config.js の作成

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
    clean: true,
  },
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: ['style-loader', 'css-loader'],
      },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './index.html',
    }),
  ],
  devServer: {
    static: './dist',
    open: true,
  },
  mode: 'development',
};

5. index.html の作成

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Swiper Slider</title>
  <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css">
</head>
<body>
  <div class="swiper">
    <div class="swiper-wrapper">
      <div class="swiper-slide">Slide 1</div>
      <div class="swiper-slide">Slide 2</div>
      <div class="swiper-slide">Slide 3</div>
    </div>
    <div class="swiper-pagination"></div>
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
  </div>
</body>
</html>

6. styles.css の作成

body {
  font-family: Arial, sans-serif;
  margin: 0;
  padding: 0;
}

.swiper {
  width: 100%;
  height: 100vh;
}

7. index.js の作成

import 'swiper/css';
import './styles.css';
import Swiper from 'swiper/bundle';

const swiper = new Swiper('.swiper', {
  loop: true,
  pagination: {
    el: '.swiper-pagination',
    clickable: true,
  },
  navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
  },
});

8. スクリプトの追加(package.json

"scripts": {
  "start": "webpack serve",
  "build": "webpack"
}

9. 開発サーバーの起動

npm start

10. 本番用ビルド

npm run build

これで、npmWebpack を使って効率的に Swiper をモジュール化し、バンドルできる開発環境が整いました!

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?