diff --git a/.gitignore b/.gitignore index e7803e6e697..104d05318f3 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ Gemfile.lock .jekyll-cache .jekyll-metadata _site +_app # RubyGems *.gem diff --git a/_config.yml b/_config.yml index 613b043b253..8e54ea7f7d3 100644 --- a/_config.yml +++ b/_config.yml @@ -168,6 +168,9 @@ collections: tabs: output: true sort_by: order + app: + output: true + permalink: /:name defaults: - scope: @@ -190,10 +193,6 @@ defaults: values: layout: page permalink: /:title/ - - scope: - path: assets/js/dist - values: - swcache: true sass: style: compressed diff --git a/_includes/js-selector.html b/_includes/js-selector.html index b229b70d738..99651076573 100644 --- a/_includes/js-selector.html +++ b/_includes/js-selector.html @@ -6,8 +6,6 @@ -{% assign js_dist = '/assets/js/dist/' %} - {% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %} {% assign urls = urls | append: ',' | append: site.data.origin[type]['lazy-polyfill'].js %} @@ -62,7 +60,8 @@ {% assign js = 'commons' %} {% endcase %} -{% capture script %}{{ js_dist }}{{ js }}.min.js{% endcapture %} +{% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %} + {% if page.math %} @@ -93,7 +92,7 @@ {% if jekyll.environment == 'production' %} {% if site.pwa.enabled %} - + {% endif %} diff --git a/_javascript/_copyright b/_javascript/_copyright deleted file mode 100644 index 60a706be6d5..00000000000 --- a/_javascript/_copyright +++ /dev/null @@ -1 +0,0 @@ -Chirpy v<%= pkg.version %> | © 2019 <%= pkg.author %> | <%= pkg.license %> Licensed | <%= pkg.homepage %> diff --git a/_javascript/pwa/_frontmatter b/_javascript/pwa/_frontmatter deleted file mode 100644 index 97ecf0a6bde..00000000000 --- a/_javascript/pwa/_frontmatter +++ /dev/null @@ -1,3 +0,0 @@ ---- -permalink: /:basename ---- diff --git a/package.json b/package.json index 5748986571d..21cab36439c 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ }, "author": "Cotes Chung", "license": "MIT", + "since": 2019, "bugs": { "url": "https://github.com/cotes2020/jekyll-theme-chirpy/issues" }, @@ -43,7 +44,6 @@ "husky": "^9.0.11", "purgecss": "^6.0.0", "rollup": "^4.18.0", - "rollup-plugin-license": "^3.4.0", "semantic-release": "^24.0.0", "stylelint": "^16.6.1", "stylelint-config-standard-scss": "^13.1.0" diff --git a/rollup.config.js b/rollup.config.js index 823401e0dad..7e6f2704704 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,38 +1,45 @@ import babel from '@rollup/plugin-babel'; import terser from '@rollup/plugin-terser'; -import license from 'rollup-plugin-license'; import { nodeResolve } from '@rollup/plugin-node-resolve'; -import fs from 'fs'; -import path from 'path'; import yaml from '@rollup/plugin-yaml'; +import fs from 'fs'; +import pkg from './package.json'; const SRC_DEFAULT = '_javascript'; const DIST_DEFAULT = 'assets/js/dist'; + const SRC_PWA = `${SRC_DEFAULT}/pwa`; +const DIST_PWA = '_app'; + +const banner = `/*! + * ${pkg.name} v${pkg.version} | © ${pkg.since} ${pkg.author} | ${pkg.license} Licensed | ${pkg.homepage} + */`; const isProd = process.env.BUILD === 'production'; -if (fs.existsSync(DIST_DEFAULT)) { - fs.rm(DIST_DEFAULT, { recursive: true, force: true }, (err) => { - if (err) { - throw err; +function cleanup(...dirs) { + for (const dir of dirs) { + if (fs.existsSync(dir)) { + fs.rm(dir, { recursive: true, force: true }, (err) => { + if (err) { + throw err; + } + }); } - }); + } } function build(filename, opts = {}) { const src = opts.src || SRC_DEFAULT; const dist = opts.dist || DIST_DEFAULT; - const bannerUrl = - opts.bannerUrl || path.join(__dirname, SRC_DEFAULT, '_copyright'); - const commentStyle = opts.commentStyle || 'ignored'; return { - input: [`${src}/${filename}.js`], + input: `${src}/${filename}.js`, output: { file: `${dist}/${filename}.min.js`, format: 'iife', name: 'Chirpy', + banner: banner, sourcemap: !isProd }, watch: { @@ -46,18 +53,13 @@ function build(filename, opts = {}) { }), nodeResolve(), yaml(), - isProd && commentStyle === 'none' && terser(), - license({ - banner: { - commentStyle, - content: { file: bannerUrl } - } - }), - isProd && commentStyle !== 'none' && terser() + isProd && terser() ] }; } +cleanup(DIST_DEFAULT, DIST_PWA); + export default [ build('commons'), build('home'), @@ -65,10 +67,6 @@ export default [ build('page'), build('post'), build('misc'), - build('app', { src: SRC_PWA }), - build('sw', { - src: SRC_PWA, - bannerUrl: path.join(__dirname, SRC_PWA, '_frontmatter'), - commentStyle: 'none' - }) + build('app', { src: SRC_PWA, dist: DIST_PWA }), + build('sw', { src: SRC_PWA, dist: DIST_PWA }) ]; diff --git a/tools/init.sh b/tools/init.sh index ed478d793f7..c0c4e183b79 100755 --- a/tools/init.sh +++ b/tools/init.sh @@ -92,7 +92,7 @@ init_files() { npm i && npm run build # track the CSS/JS output - _sedi "/.*\/dist$/d" .gitignore + _sedi "/.*\/dist$/d;/^_app$/d" .gitignore } commit() { diff --git a/tools/release.sh b/tools/release.sh index 6d010b63171..e505f1a2847 100755 --- a/tools/release.sh +++ b/tools/release.sh @@ -17,6 +17,7 @@ CONFIG="_config.yml" CSS_DIST="_sass/dist" JS_DIST="assets/js/dist" +PWA_DIST="_app" FILES=( "$GEM_SPEC" @@ -111,20 +112,13 @@ prepare() { ## Build a Gem package build_gem() { - if $opt_pkg; then - BACKUP_PATH="$(mktemp -d)" - mkdir -p "$BACKUP_PATH"/css "$BACKUP_PATH"/js - [[ -d $CSS_DIST ]] && cp "$CSS_DIST"/* "$BACKUP_PATH"/css - [[ -d $JS_DIST ]] && cp "$JS_DIST"/* "$BACKUP_PATH"/js - fi - # Remove unnecessary theme settings sed -i -E "s/(^timezone:).*/\1/;s/(^cdn:).*/\1/;s/(^avatar:).*/\1/" $CONFIG rm -f ./*.gem npm run build # add CSS/JS distribution files to gem package - git add "$CSS_DIST" "$JS_DIST" -f + git add "$CSS_DIST" "$JS_DIST" "$PWA_DIST" -f echo -e "\n> gem build $GEM_SPEC\n" gem build "$GEM_SPEC" @@ -132,14 +126,6 @@ build_gem() { echo -e "\n> Resume file changes ...\n" git reset git checkout . - - if $opt_pkg; then - # restore the dist files for future development - mkdir -p "$CSS_DIST" "$JS_DIST" - cp "$BACKUP_PATH"/css/* "$CSS_DIST" - cp "$BACKUP_PATH"/js/* "$JS_DIST" - rm -rf "$BACKUP_PATH" - fi } # Push the gem to RubyGems.org (using $GEM_HOST_API_KEY)