Для начала работы с ScrollMagic в среде Webpack необходимо установить библиотеку через npm:
npm install scrollmagic
После установки можно подключить ScrollMagic в проекте:
import ScrollMagic from "scrollmagic";
Если используется плагин animation.gsap для интеграции с
GSAP, подключение производится отдельно:
import { TweenMax, TimelineMax } from "gsap";
import "scrollmagic/scrollmagic/uncompressed/plugins/animation.gsap";
Важно учитывать, что ScrollMagic использует глобальные объекты для некоторых плагинов, поэтому необходимо настроить правильный импорт при сборке через Webpack.
ScrollMagic не всегда полностью совместим с современными стандартами
модулей ES6, поэтому рекомендуется использовать
babel-loader:
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
options: {
presets: ["@babel/preset-env"]
}
}
}
]
}
Это обеспечит корректную работу import и поддержку
современных возможностей JS.
Для проектов с большим количеством анимаций имеет смысл разделять ScrollMagic и основные скрипты:
optimization: {
splitChunks: {
cacheGroups: {
scrollmagic: {
test: /[\\/]node_modules[\\/]scrollmagic[\\/]/,
name: "scrollmagic",
chunks: "all",
}
}
}
}
Такой подход уменьшает размер основного бандла и позволяет кэшировать библиотеку отдельно.
Если используется animation.gsap или
debug.addIndicators, важно корректно настроить Webpack на
обработку нестандартных плагинов. Например, через
imports-loader:
module: {
rules: [
{
test: /animation\.gsap\.js$/,
loader: "imports-loader",
options: {
imports: ["default gsap TweenMax"]
}
}
]
}
Для debug.addIndicators может потребоваться аналогичная
конфигурация, так как этот плагин ориентирован на работу с глобальными
объектами.
Для отладки анимаций рекомендуется включать source maps:
devtool: "source-map",
devServer: {
static: "./dist",
hot: true
}
Это позволит отслеживать вызовы ScrollMagic и GSAP прямо в исходных файлах, а не в собранном бандле.
const path = require("path");
module.exports = {
entry: "./src/index.js",
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "dist")
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
options: { presets: ["@babel/preset-env"] }
}
},
{
test: /animation\.gsap\.js$/,
loader: "imports-loader",
options: { imports: ["default gsap TweenMax"] }
}
]
},
optimization: {
splitChunks: {
cacheGroups: {
scrollmagic: {
test: /[\\/]node_modules[\\/]scrollmagic[\\/]/,
name: "scrollmagic",
chunks: "all"
}
}
}
},
devtool: "source-map",
devServer: {
static: "./dist",
hot: true
}
};
import ScrollMagic from "scrollmagic"; позволяет
использовать библиотеку в компонентах и модулях без глобальных
переменных.imports-loader.devtool: false.ScrollMagic через Webpack удобно использовать в сочетании с React, Vue или Angular. Основные принципы:
componentDidMount или
аналогичном жизненном цикле.