From 02991408312de0c87cf3e1fd0646fa71f8448d6f Mon Sep 17 00:00:00 2001 From: Dvurechensky <46356631+Dvurechensky@users.noreply.github.com> Date: Sun, 2 Mar 2025 22:32:32 +0300 Subject: [PATCH] 1.0.3 README --- README.md | 463 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 463 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..b119158 --- /dev/null +++ b/README.md @@ -0,0 +1,463 @@ +# 🌁 Π¨Π°Π±Π»ΠΎΠ½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ASP NET CORE MVC, Frontend - Π½Π° TypeScript + +## πŸŽ‡ Π­Ρ‚Π°ΠΏΡ‹ наполнСния конфигурациями πŸŽ‡ + +--- +1. β›… Π˜ΠΌΠΏΠΎΡ€Ρ‚ `tsconfig.json` β›… +--- + +
+Π Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ΄ tsconfig.json + +```json +{ + "compilerOptions": { + "target": "es2016", // УстанавливаСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ JavaScript, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ компилируСтся TypeScript (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ES2016). + "module": "es6", // ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² процСссС компиляции (ES6 ΠΌΠΎΠ΄ΡƒΠ»ΠΈ). + "moduleResolution": "node", // Бпособ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π² Node.js. + "jsx": "preserve", // Как ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ JSX. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС оставляСм JSX Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. + "declaration": false, // Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² (.d.ts). Π—Π΄Π΅ΡΡŒ это ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ. + "removeComments": true, // Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ· скомпилированного ΠΊΠΎΠ΄Π°. + "noImplicitAny": false, // ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ прСдупрСТдСния ΠΎ нСявных Ρ‚ΠΈΠΏΠ°Ρ… `any` Π² ΠΊΠΎΠ΄Π΅. + "noEmitOnError": true, // Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ компиляция Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ остановлСна, Ссли Π΅ΡΡ‚ΡŒ ошибки. + "sourceMap": true, // Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°Ρ€Ρ‚Ρ‹ исходных ΠΊΠΎΠ΄ΠΎΠ² для упрощСния ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. + "esModuleInterop": true, // Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с модулями ES ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ CommonJS ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. + "experimentalDecorators": true, // Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² TypeScript. + "emitDecoratorMetadata": true, // Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… для Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π°ΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… ΠΊΠ°ΠΊ TypeORM ΠΈΠ»ΠΈ Angular. + "outDir": "ScriptsAndCss/JsScripts", // Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ для сохранСния скомпилированных Ρ„Π°ΠΉΠ»ΠΎΠ². + "lib": [ "es2016", "dom" ] // Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΡ€ΠΈ компиляции (ES2016 ΠΈ DOM). + }, + "exclude": [ + "node_modules" // Π˜ΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠ°ΠΏΠΊΡƒ node_modules ΠΈΠ· процСсса компиляции. + ] +} +``` + +
+ +--- +2. β›… Π˜ΠΌΠΏΠΎΡ€Ρ‚ `webpack.config.js` β›… +--- + +
+Π Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ΄ webpack.config.js + +```js +const path = require('path'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); +const TerserPlugin = require('terser-webpack-plugin'); // Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ TerserPlugin + +module.exports = { + entry: { + app: './ScriptsAndCss/TypeScripts/main_api.ts', // Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° для JavaScript + styles: './ScriptsAndCss/CssFiles/styles.css' // Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° для CSS (ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой CSS-Ρ„Π°ΠΉΠ») + }, + output: { + path: path.resolve(__dirname, 'wwwroot/js'), + filename: '[name].min.js' // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ [name] для динамичСского ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° + }, + resolve: { + extensions: ['.ts', '.js', '.css'] // Π”ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ .css + }, + module: { + rules: [ + { + test: /\.ts$/, + use: 'ts-loader', + exclude: /node_modules/ + }, + { + test: /\.css$/, + use: [ + MiniCssExtractPlugin.loader, // Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ CSS Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ + 'css-loader' // ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ @import ΠΈ url() + ] + } + ] + }, + plugins: [ + new MiniCssExtractPlugin({ + filename: '../css/app.min.css' // ΠšΡƒΠ΄Π° Webpack Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ CSS-Ρ„Π°ΠΉΠ» + }) + ], + mode: 'development', + watch: true, +}; +``` + +
+
+ +> Π’ случаС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Production Ρ€Π΅Π»ΠΈΠ·Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ `mode: 'development'` Π½Π° `mode: 'production'` Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ + +
+Π Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ webpack.config.js + +```js +mode: 'production', // ИзмСнСн Ρ€Π΅ΠΆΠΈΠΌ Π½Π° production для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ +optimization: { + minimize: true, // Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ + minimizer: [ + new TerserPlugin(), // Плагин для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ JS + new CssMinimizerPlugin() // Плагин для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ CSS + ] +}, +``` + +
+ +--- +3. β›… Π˜ΠΌΠΏΠΎΡ€Ρ‚ `package.json` - ряд ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΏΠΎΠ΄ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ β›… +--- + +
+Π Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ΄ package.json + +```json +{ + "version": "1.0.0", + "name": "asp.net", + "private": true, + "devDependencies": { + "css-minimizer-webpack-plugin": "7.0.0", + "terser-webpack-plugin": "5.3.12", + "cytoscape": "^3.31.0", + "cytoscape-cose-bilkent": "4.1.0", + "grunt": "1.4.1", + "style-loader": "^4.0.0", + "css-loader": "^7.1.2", + "mini-css-extract-plugin": "^2.9.2", + "grunt-webpack": "^7.0.0", + "webpack-cli": "^6.0.1", + "ts-loader": "^9.5.2", + "browser-sync": "^3.0.3", + "grunt-browser-sync": "^2.2.0", + "grunt-contrib-clean": "2.0.0", + "grunt-contrib-concat": "2.0.0", + "grunt-contrib-cssmin": "5.0.0", + "grunt-contrib-uglify": "5.0.1", + "grunt-contrib-watch": "1.1.0", + "grunt-ts": "6.0.0-beta.22" + }, + "dependencies": { + "cytoscape": "^3.31.0" + }, + "comments": { + "version": "Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.", + "name": "Имя вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.", + "private": "Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ являСтся ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π² npm.", + "devDependencies": { + "css-minimizer-webpack-plugin": "Плагин для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ CSS Ρ„Π°ΠΉΠ»ΠΎΠ² Π² процСссС сборки Webpack.", + "terser-webpack-plugin": "Плагин для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ JavaScript с использованиСм Terser.", + "cytoscape": "Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ ΠΈ сСтями.", + "cytoscape-cose-bilkent": "Плагин для Cytoscape, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ планирования располоТСния ΡƒΠ·Π»ΠΎΠ².", + "grunt": "БистСма Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ для Node.js, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для сборки, ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ тСстирования.", + "style-loader": "Π›ΠΎΠ°Π΄Π΅Ρ€ для ΠΈΠ½ΠΆΠ΅ΠΊΡ†ΠΈΠΈ CSS Π² DOM Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Π³ΠΈ `