Ana içeriğe geç

Bundler ile İstemci Kullanımı

İstemci kütüphanesini farklı paketleme araçlarıyla birleştirmek için yapılandırma aşağıda bulabilirsiniz:

  • Webpack 5
    • Tarayıcı
    • Node.js
  • Rollup.js
    • Tarayıcı
    • Node.js

Webpack 5

Dokümantasyon: Webpack Resmi Dokümantasyonu

bilgi

Webpack, JavaScript uygulamalarını yönetmek için yaygın bir module bundler'dır. Kullanımı ile ilgili daha fazla bilgi için resmi dokümantasyonu ziyaret edin.

Tarayıcı

Kurulum:

npm i -D socket.io-client webpack webpack-cli babel-loader @babel/core @babel/preset-env \
@babel/plugin-transform-object-assign webpack-remove-debug

webpack.config.js

module.exports = {
entry: "./index.js",
output: {
filename: "bundle.js",
},
mode: "production",
node: false,
module: {
rules: [
{
test: /\.m?js$/,
use: {
loader: "babel-loader",
options: {
presets: ["@babel/preset-env"], // eski tarayıcılarla uyumluluğu sağla
plugins: ["@babel/plugin-transform-object-assign"], // IE 11 ile uyumluluğu sağla
},
},
},
{
test: /\.js$/,
loader: "webpack-remove-debug", // "debug" paketini kaldır
},
],
},
};

Referans olarak, webpack-bundle-analyzer paketinin çıktısı:

webpack-bundle-analyzer paketinin çıktısı

Node.js

Bir Node.js ortamında (sunucu-sunucu bağlantısı) istemciyi kullanmak için yapılandırma aşağıda verilmiştir:

Kurulum:

npm i -D socket.io-client webpack webpack-cli

webpack.config.js

module.exports = {
entry: "./index.js",
output: {
filename: "bundle.js",
},
mode: "production",
target: "node",
externals: {
bufferutil: "bufferutil",
"utf-8-validate": "utf-8-validate",
},
};
tehlike

target: "node" ayarı olmadan, muhtemelen aşağıdaki hatayla karşılaşacaksınız:

ReferenceError: document is not defined

Rollup.js

Dokümantasyon: Rollup Resmi Dokümantasyonu

bilgi

Rollup, özellikle JavaScript modüllerini optimize etmek için kullanılan bir module bundler'dır. Hem tarayıcılar hem de Node.js ortamları için uygun bir yapı sunar.

Tarayıcı

Kurulum:

npm i -D socket.io-client rollup @rollup/plugin-node-resolve @rollup/plugin-commonjs @rollup/plugin-commonjs \
@rollup/plugin-babel rollup-plugin-uglify babel @babel/core @babel/preset-env

rollup.config.js

import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import babel from "@rollup/plugin-babel";
import { uglify } from "rollup-plugin-uglify";

export default {
input: "index.js",
output: {
file: "bundle.js",
format: "cjs",
},
plugins: [
resolve({
browser: true,
}),
commonjs(),
babel({
include: ["**.js", "node_modules/**"],
babelHelpers: "bundled",
presets: ["@babel/preset-env"],
}),
uglify(),
],
};

Node.js

Kurulum:

npm i -D socket.io-client rollup @rollup/plugin-node-resolve @rollup/plugin-commonjs rollup-plugin-uglify

rollup.config.js

import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import { uglify } from "rollup-plugin-uglify";

export default {
input: "index.js",
output: {
file: "bundle.js",
format: "cjs",
},
plugins: [
resolve({
preferBuiltins: true,
}),
commonjs(),
uglify(),
],
};
not

Rollup ile oluşturulan bundle, genellikle daha küçük boyutlarda olur ve modüllerin کوچuk yapısını korur.