commit bf58cd9d41d6a35e9f4bbd9138b5f528d5a9704d Author: Elinorre Date: Wed Jan 15 17:45:50 2020 +0300 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f813275 --- /dev/null +++ b/.gitignore @@ -0,0 +1,69 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# dotenv environment variable files +.env* + +# gatsby files +.cache/ +public + +# Mac files +.DS_Store + +# Yarn +yarn-error.log +.pnp/ +.pnp.js +# Yarn Integrity file +.yarn-integrity diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..58d06c3 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +.cache +package.json +package-lock.json +public diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..48e90e8 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "endOfLine": "lf", + "semi": false, + "singleQuote": false, + "tabWidth": 2, + "trailingComma": "es5" +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..01d6a2e --- /dev/null +++ b/README.md @@ -0,0 +1,60 @@ +

+ Сайт группы +

+ +## Требования +- Node.js версии не ниже 8 и менеджер пакетов npm +- Gatsby CLI +- Git + +## Запуск локально +Клонируем репозиторий, переходим в директорию сайта. Добавляем переменную окружения, в неё прописываем путь до npm. Открываем командную строку, в ней пишем: +```shell +gatsby develop +``` +При успешном запуске будет виден порт, на котором нужно запускать сайт (обычно это `htpp://localhost:8000`). + +## Содержимое папки + + ├── src + ├── components + ├── pages + ├── images + ├── styles + ├── static + ├── admin + ├── .gitignore + ├── .prettierrc + ├── gatsby-config.js + ├── gatsby-node.js + ├── gatsby-ssr.js + ├── assets.bat + ├── package-lock.json + ├── package.json + └── README.md + +Все исходники лежат в `src`. +- **/components** - элементы страницы, такие как _навигационная панель, подвал, основные стили._ +- **/images** - изображения, которые используются на сайте. +- **/pages** - основной контент, * *.js-файлы трогать не нужно.* Все markdown-файлы находятся в папке `content` +- **/styles** - стили сайта. + +В `static` находятся настройки административной панели и статические файлы. Её трогать не нужно. + +- Файл `gatsby-config.js` предназначен для внесения плагинов. +- В `gatsby-node.js` хранится код для преобразования .md-файлов в страницы. +- `gatsby-ssr.js` содержит внешние скрипты. + +## Редактирование +Для редактирования сайта существуют два способа: локально и с помощью Netlify CMS. + +### **Локально** +1. В папке `/content` вносим изменения в существующие markdown-файлы, добавляем новые, удаляем ненужные. +2. Добавляем при необходимости изображения в папку `/images`. +3. Запускаем `assets.bat` для предотвращения проблем с файлами. +4. В командной строке переходим в директорию сайта, запускаем `gatsby develop`, локально проверяем, как выглядит. +5. Делаем коммит изменений, пушим в репозиторий на Github. + +### **С помощью Netlify CMS** +1. К пути сайта добавляем `/admin`, оказываемся в панели администратора. +2. Вносим нужные изменения и сохраняем. \ No newline at end of file diff --git a/assets.bat b/assets.bat new file mode 100644 index 0000000..e5b4b53 --- /dev/null +++ b/assets.bat @@ -0,0 +1,2 @@ +xcopy "src/images" "static/images" /f /y /i /s +xcopy "src/files" "static/files" /f /y /i /s \ No newline at end of file diff --git a/gatsby-config.js b/gatsby-config.js new file mode 100644 index 0000000..a6df9c1 --- /dev/null +++ b/gatsby-config.js @@ -0,0 +1,58 @@ +module.exports = { + siteMetadata: { + title: `MIPT-NPM group`, + description: `Nuclear Physics Methods Laboratory`, + }, + + plugins: [ + `gatsby-plugin-sharp`, + `gatsby-transformer-sharp`, + { + resolve: `gatsby-transformer-remark`, + options: { + plugins: [ + 'gatsby-remark-katex', + 'gatsby-remark-relative-images', + { + resolve: 'gatsby-remark-images', + options: { + maxWidth: 100 + } + }, + ], + }, + }, + // { + // resolve: "gatsby-remark-normalize-paths", + // options: { + // pathFields: ["image", "cover"] + // }, + // }, + `gatsby-plugin-react-helmet`, + { + resolve: 'gatsby-source-filesystem', + options: { + path: `${__dirname}/src/images`, + name: 'images', + }, + }, + { + resolve: `gatsby-source-filesystem`, + options: { + name: `content`, + path: `${__dirname}/src/pages/content`, + }, + }, + { + resolve: `gatsby-plugin-manifest`, + options: { + name: `gatsby-starter-default`, + short_name: `npm`, + start_url: `/`, + display: `minimal-ui`, + icon: `src/images/icon.png`, // This path is relative to the root of the site. + }, + }, + `gatsby-plugin-netlify-cms`, + ], +} \ No newline at end of file diff --git a/gatsby-node.js b/gatsby-node.js new file mode 100644 index 0000000..be64ebf --- /dev/null +++ b/gatsby-node.js @@ -0,0 +1,37 @@ +const path = require('path') +const { createFilePath } = require(`gatsby-source-filesystem`) + + +exports.createPages = async ({ actions, graphql }) => { + const {createPage} = actions; + + const courseTemplate = path.resolve(`./src/components/courseTemplate.js`); + const result = await graphql(`{ + allMarkdownRemark( + filter: {frontmatter: { + content_type: {eq: "page_education"}, + published: {eq: true}}} + ){ + edges{ + node{ + html + frontmatter{ + title + path + } + } + } + } + }`) + + if(result.errors){throw result.errors;} + + const courses = result.data.allMarkdownRemark.edges; + + courses.forEach(({node}) => { + createPage({ + path: node.frontmatter.path, + component: courseTemplate + }) + }) +} \ No newline at end of file diff --git a/gatsby-ssr.js b/gatsby-ssr.js new file mode 100644 index 0000000..ae84e01 --- /dev/null +++ b/gatsby-ssr.js @@ -0,0 +1,75 @@ +import React from "react"; +export function onRenderBody( + { setHeadComponents, setPostBodyComponents } +) { + setHeadComponents([ +