فهرست منبع

Add banner generation to CSS files and update package metadata

codecalm 7 ماه پیش
والد
کامیت
0afaaf2348
4فایلهای تغییر یافته به همراه54 افزوده شده و 6 حذف شده
  1. 46 0
      core/build/add-banner.mjs
  2. 2 1
      core/package.json
  3. 5 5
      shared/banner/index.mjs
  4. 1 0
      shared/banner/package.json

+ 46 - 0
core/build/add-banner.mjs

@@ -0,0 +1,46 @@
+#!/usr/bin/env node
+
+'use strict'
+
+import { readFileSync, writeFileSync } from 'node:fs';
+import { join, dirname, basename } from 'node:path';
+import { fileURLToPath } from 'node:url'
+import { sync } from 'glob';
+import banner from '@repo/banner';
+
+const __dirname = dirname(fileURLToPath(import.meta.url))
+
+const styles = sync(join(__dirname, '..', 'dist', 'css', '*.css'))
+
+const plugins = {
+	'tabler-flags': 'Flags',
+	'tabler-flags.rtl': 'Flags RTL',
+	'tabler-marketing': 'Marketing',
+	'tabler-marketing.rtl': 'Marketing RTL',
+	'tabler-payments': 'Payments',
+	'tabler-payments.rtl': 'Payments RTL',
+	'tabler-socials': 'Socials',
+	'tabler-socials.rtl': 'Socials RTL',
+	'tabler-vendors': 'Vendors',
+	'tabler-vendors.rtl': 'Vendors RTL',
+}
+
+styles.forEach((file, i) => {
+	const content = readFileSync(file, 'utf8')
+	const filename = basename(file)
+	const pluginKey = Object.keys(plugins).find(plugin => filename.includes(plugin))
+	const plugin = plugins[pluginKey]
+	const regex = /^(@charset ['"][a-zA-Z0-9-]+['"];?)\n?/i
+
+	let newContent = ''
+
+	if (content.match(regex)) {
+		newContent = content.replace(regex, (m, m1) => {
+			return `${m1}\n${banner(plugin)}\n`
+		})
+	} else {
+		newContent = `${banner(plugin)}\n${content}`
+	}
+
+	writeFileSync(file, newContent, 'utf8')
+})

+ 2 - 1
core/package.json

@@ -7,8 +7,9 @@
     "dev": "pnpm run watch",
     "build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run copy",
     "clean": "rm -rf dist/* demo",
-    "css": "pnpm run css-compile && pnpm run css-prefix && pnpm run css-rtl && pnpm run css-minify",
+    "css": "pnpm run css-compile && pnpm run css-prefix && pnpm run css-rtl && pnpm run css-minify && pnpm run css-banner",
     "css-compile": "sass scss/:dist/css/ --no-source-map --load-path=node_modules",
+    "css-banner": "node build/add-banner.mjs",
     "css-prefix": "postcss --config build/postcss.config.mjs --replace 'dist/css/*.css' '!dist/css/*.rtl*.css' '!dist/css/*.min.css'",
     "css-rtl": "cross-env NODE_ENV=RTL postcss --config build/postcss.config.mjs --dir 'dist/css' --ext '.rtl.css' 'dist/css/*.css' '!dist/css/*.min.css' '!dist/css/*.rtl.css'",
     "css-minify": "pnpm run css-minify-main && pnpm run css-minify-rtl",

+ 5 - 5
shared/banner/index.mjs

@@ -11,11 +11,11 @@ const year = new Date().getFullYear()
 
 function getBanner(pluginFilename) {
 	return `/*!
-  * Tabler${pluginFilename ? ` ${pluginFilename}` : ''} v${pkg.version} (${pkg.homepage})
-  * Copyright 2018-${year} The Tabler Authors
-  * Copyright 2018-${year} codecalm.net Paweł Kuna
-  * Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE)
-  */`
+ * Tabler${pluginFilename ? ` ${pluginFilename}` : ''} v${pkg.version} (${pkg.homepage})
+ * Copyright 2018-${year} The Tabler Authors
+ * Copyright 2018-${year} codecalm.net Paweł Kuna
+ * Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE)
+ */`
 }
 
 export default getBanner

+ 1 - 0
shared/banner/package.json

@@ -1,6 +1,7 @@
 {
   "name": "@repo/banner",
   "version": "1.0.0",
+  "homepage": "https://tabler.io",
   "exports": {
     ".": {
       "default": "./index.mjs"