From 89ca84e47d4958e064b682405e94a3270fc99338 Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Thu, 10 Oct 2024 12:45:44 +0800 Subject: chore: move config files about dev into scripts/ --- scripts/rollup.config.js | 63 +++++++++++++++++++++++ scripts/stylelint.sh | 2 +- scripts/stylelintrc.json | 130 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 scripts/rollup.config.js create mode 100644 scripts/stylelintrc.json (limited to 'scripts') diff --git a/scripts/rollup.config.js b/scripts/rollup.config.js new file mode 100644 index 0000000..d4af05f --- /dev/null +++ b/scripts/rollup.config.js @@ -0,0 +1,63 @@ +import node from '@rollup/plugin-node-resolve' +import commonjs from '@rollup/plugin-commonjs' +import terser from '@rollup/plugin-terser' +import { existsSync } from 'fs' +import { join } from 'path' +import { bundleStats } from 'rollup-plugin-bundle-stats' + +const production = !process.env.ROLLUP_WATCH + +const general = { + output: [ + { + dir: './dist', + format: 'esm', + entryFileNames: '[name].mjs', + sourcemap: 'true', + }, + ], + watch: { + clearScreen: false, + include: ['src/**', 'node_modules/mapclay/dist/mapclay.mjs'], + }, + context: 'window', + plugins: [ + { + name: 'watch-mapclay', + buildStart () { + const mapclayPath = join(process.cwd(), 'node_modules', 'mapclay', 'dist', 'mapclay.mjs') + if (existsSync(mapclayPath)) { + this.addWatchFile(mapclayPath) + } else { + console.warn('mapclay.mjs not found at:', mapclayPath) + } + }, + }, + { + name: 'leader-line', + transform (code, id) { + if (id.includes('node_modules/leader-line/')) { + return `${code}\nexport default LeaderLine;` + } + return null + }, + }, + node(), + commonjs(), + production && terser({ + keep_fnames: true, + }), + production && bundleStats(), + ], +} + +export default [ + { + input: 'src/editor.mjs', + }, + { + input: 'src/dumbymap.mjs', + }, +] + .map(config => ({ ...general, ...config })) + .filter((config) => production || config.input.match(/editor/)) diff --git a/scripts/stylelint.sh b/scripts/stylelint.sh index 91561de..c44d00b 100755 --- a/scripts/stylelint.sh +++ b/scripts/stylelint.sh @@ -1,4 +1,4 @@ #! /bin/bash shopt -s extglob -stylelint src/css/!(easymde.min.css) --fix +stylelint -c scripts/stylelintrc.json src/css/!(easymde.min.css) --fix diff --git a/scripts/stylelintrc.json b/scripts/stylelintrc.json new file mode 100644 index 0000000..6e8978b --- /dev/null +++ b/scripts/stylelintrc.json @@ -0,0 +1,130 @@ +{ + "extends": [ + "stylelint-config-standard" + ], + "plugins": [ + "stylelint-order" + ], + "rules": { + "at-rule-no-vendor-prefix": true, + "color-hex-length": "short", + "color-named": "always-where-possible", + "comment-whitespace-inside": "always", + "custom-property-empty-line-before": "never", + "declaration-block-single-line-max-declarations": 1, + "declaration-empty-line-before": null, + "font-family-name-quotes": "always-where-required", + "no-duplicate-selectors": true, + "property-no-vendor-prefix": true, + "selector-attribute-quotes": "always", + "selector-class-pattern": null, + "selector-no-vendor-prefix": true, + "value-no-vendor-prefix": true, + "order/order": [ + "custom-properties", + "dollar-variables", + "declarations", + "rules", + "at-rules" + ], + "order/properties-order": [ + { + "groupName": "Display & Box Model", + "emptyLineBefore": "always", + "noEmptyLineBetween": true, + "properties": [ + "content", + "display", + "box-sizing", + "overflow", + "flex", + "flex-direction", + "justify-content", + "align-items", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "padding", + "padding-block", + "padding-inline", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left" + ] + }, + { + "groupName": "Positioning", + "emptyLineBefore": "always", + "noEmptyLineBetween": true, + "properties": [ + "position", + "left", + "top", + "right", + "bottom", + "z-index" + ] + }, + { + "groupName": "Border", + "emptyLineBefore": "always", + "noEmptyLineBetween": true, + "properties": [ + "border", + "border-top", + "border-right", + "border-bottom", + "border-left", + "border-radius" + ] + }, + { + "groupName": "Background", + "emptyLineBefore": "always", + "noEmptyLineBetween": true, + "properties": [ + "background", + "background-color", + "background-image", + "background-repeat", + "background-position" + ] + }, + { + "groupName": "Typography", + "emptyLineBefore": "always", + "noEmptyLineBetween": true, + "properties": [ + "color", + "font-family", + "font-size", + "font-weight", + "line-height", + "text-align", + "text-transform" + ] + }, + { + "groupName": "Visual", + "emptyLineBefore": "always", + "noEmptyLineBetween": true, + "properties": [ + "transition", + "transform", + "visibility", + "opacity", + "cursor" + ] + } + ] + } +} -- cgit v1.2.3-70-g09d2