From fcca198b573bad6b4ec3f446336a1f8fc5ba5884 Mon Sep 17 00:00:00 2001 From: DashaKukartseva Date: Wed, 20 Mar 2024 09:58:51 +0500 Subject: [PATCH] module1-task2 --- .gitignore | 1 + package.json | 46 +++++++++++++++++++++++++++-- webpack.config.js | 73 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore index 566d3ae..dd6bc04 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ Thumbs.db node_modules/ # Собранные файлы (допишите самостоятельно) +/build diff --git a/package.json b/package.json index be1b013..4e5c8e7 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,58 @@ + { "name": "big-trip", "version": "19.0.0", "private": true, "description": "Проект «Большое путешествие» от HTML Academy", + "main": "main.js", + "scripts": { - "lint": "eslint src/" + "lint": "eslint src/", + "test": "echo \"Error: no test specified\" && exit 1", + "build": "webpack --mode production", + "start": "webpack serve --mode development --open" }, + + "repository":{ + "type": "git", + "url": "https://github.com/DashaKukartseva/2433045-big-trip-4" + }, + + "dependencies": { + "dayjs": "^1.11.6", + "flatpickr": "^4.6.13", + "he": "^1.2.0" + }, + "devDependencies": { "eslint": "8.28.0", - "eslint-config-htmlacademy": "8.0.0" + "eslint-config-htmlacademy": "8.0.0", + "@babel/core": "^7.24.0", + "@babel/preset-env": "^7.24.0", + "babel-loader": "^9.1.3", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.7.2", + "html-webpack-plugin": "^5.6.0", + "style-loader": "^3.3.1", + "webpack": "^5.75.0", + "webpack-cli": "^5.0.0", + "webpack-dev-server": "^4.11.1" }, + "engines": { "node": "18" + }, + + "browserslist":{ + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] } } diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..d12dde7 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,73 @@ +const path = require('path'); // Импортируем модуль "path" для работы с путями файлов +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); + + +module.exports = { + entry: './src/main.js', // Точка входа для сборки проекта + output: { + filename: 'bundle.[contenthash].js', // Имя выходного файла сборки + path: path.resolve(__dirname, 'build'), // Путь для выходного файла сборки + clean: { + // сохранение файлов + keep: /\ignored\/dir\// + } + }, + + module: { + rules: [ + { + test: /\.css$/, // Регулярное выражение для обработки файлов с расширением .css + use: ['style-loader', 'css-loader'], // Загрузчики, используемые для обработки CSS-файлов + }, + ], + }, + + module: { + rules: [ + { + test: /\.js$/, // применять загрузчик только к файлам .js + exclude: /node_modules/, // не применять загрузчик к файлам в папке node_modules + use: { + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'] + } + } + } + ] + }, + + devtool: 'source-map', // Здесь задаем создание карт + module: { + rules: [{ + test: /\.js$/, + use: { + loader: 'babel-loader', + options: { sourceMaps: true } // Командуем Babel создавать карты + } + }]}, + + plugins: [ + new HtmlWebpackPlugin({ + template: './src/index.html', + ignore: ['index.html'] + }), + new CopyWebpackPlugin({ + patterns: [ + { + from: path.resolve(__dirname, './src/public'), + to: path.resolve(__dirname, './src/build') + } + ]}) + ], + + devServer: { + static: { + directory: path.join(__dirname, 'dist'), // Каталог для статики + }, + open: true, // Автоматически открывать браузер + }, + + mode: 'development', // Режим сборки +}; \ No newline at end of file