Skip to content

Commit

Permalink
feat: Feature/unplugin 2.x alpha (#36)
Browse files Browse the repository at this point in the history
* chore: rename pkg name

* feat: commit @tailwindcss-mangle/config

* feat: commit config pkg

* fix: tailwindcss-patch test case

* feat: prepare for v2 plugin

* feat: commit new eslint config

* chore: format codes

* feat: commit alpha unplugin

* chore: allow test for unplugin-tailwindcss-mangle

* fix: miss deps

* chore: fix build error
  • Loading branch information
sonofmagic authored Aug 8, 2023
1 parent df59586 commit a4de2ba
Show file tree
Hide file tree
Showing 81 changed files with 1,849 additions and 1,520 deletions.
10 changes: 2 additions & 8 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
/** @type {import('eslint').Linter.Config} */
module.exports = {
root: true,
extends: ['@icebreakers/eslint-config-ts', 'plugin:unicorn/recommended'],
rules: {
'unicorn/prefer-module': 0,
'unicorn/prevent-abbreviations': 0,
'unicorn/filename-case': 0,
'unicorn/no-object-as-default-parameter': 0,
'unicorn/no-null': 0
}
extends: ['icebreaker', 'plugin:prettier/recommended']
}
7 changes: 7 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,13 @@
"type": "node-terminal",
"cwd": "${workspaceFolder}/packages/tailwindcss-patch"
},
{
"command": "npm run test:dev",
"name": "[unplugin-tailwindcss-mangle] test:dev",
"request": "launch",
"type": "node-terminal",
"cwd": "${workspaceFolder}/packages/unplugin-tailwindcss-mangle"
},
{
"command": "npm run build",
"name": "Debug nuxt-app",
Expand Down
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# tailwindcss-mangle

![star](https://badgen.net/github/stars/sonofmagic/tailwindcss-mangle)
![dm0](https://badgen.net/npm/dm/tailwindcss-mangle-core)
![dm1](https://badgen.net/npm/dm/tailwindcss-mangle-shared)
![dm0](https://badgen.net/npm/dm/@tailwindcss-mangle/core)
![dm1](https://badgen.net/npm/dm/@tailwindcss-mangle/shared)
![dm2](https://badgen.net/npm/dm/tailwindcss-patch)
![dm3](https://badgen.net/npm/dm/unplugin-tailwindcss-mangle)
[![test](https://github.com/sonofmagic/tailwindcss-mangle/actions/workflows/test.yml/badge.svg?branch=dev)](https://github.com/sonofmagic/tailwindcss-mangle/actions/workflows/test.yml)
Expand All @@ -12,8 +12,8 @@ A util for mangle tailwindcss

- [tailwindcss-mangle](#tailwindcss-mangle)
- [tailwindcss-patch](#tailwindcss-patch)
- [tailwindcss-mangle-core](#tailwindcss-mangle-core)
- [tailwindcss-mangle-shared](#tailwindcss-mangle-shared)
- [@tailwindcss-mangle/core](#@tailwindcss-mangle/core)
- [@tailwindcss-mangle/shared](#@tailwindcss-mangle/shared)
- [unplugin-tailwindcss-mangle](#unplugin-tailwindcss-mangle)
- [How to use](#how-to-use)

Expand All @@ -23,17 +23,17 @@ A util for mangle tailwindcss

click [tailwindcss-patch](./packages/tailwindcss-patch) for more details.

## tailwindcss-mangle-core
## @tailwindcss-mangle/core

The core of tailwindcss-mangle

click [tailwindcss-mangle-core](./packages/core) for more details.
click [@tailwindcss-mangle/core](./packages/core) for more details.

## tailwindcss-mangle-shared
## @tailwindcss-mangle/shared

The shared utils of tailwindcss-mangle

click [tailwindcss-mangle-shared](./packages/shared) for more details.
click [@tailwindcss-mangle/shared](./packages/shared) for more details.

## unplugin-tailwindcss-mangle

Expand Down
4 changes: 2 additions & 2 deletions apps/webpack5-vue3/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
"vue-router": "^4.2.4"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^6.2.1",
"@typescript-eslint/parser": "^6.2.1",
"@typescript-eslint/eslint-plugin": "^6.3.0",
"@typescript-eslint/parser": "^6.3.0",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-plugin-router": "~5.0.0",
Expand Down
27 changes: 14 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,36 +15,37 @@
"lint": "pnpm run -r lint",
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
"preinstall": "npx only-allow pnpm",
"sync": "cnpm sync tailwindcss-mangle-shared tailwindcss-patch unplugin-tailwindcss-mangle tailwindcss-mangle-core",
"sync": "cnpm sync @tailwindcss-mangle/shared tailwindcss-patch unplugin-tailwindcss-mangle @tailwindcss-mangle/core",
"publish-packages": "pnpm run build && pnpm run test && changeset version && changeset publish"
},
"devDependencies": {
"@changesets/changelog-github": "^0.4.8",
"@changesets/cli": "^2.26.2",
"@icebreakers/eslint-config-ts": "^1.2.2",
"@icebreakers/rollup": "^0.4.0",
"@icebreakers/tsconfig": "^0.0.7",
"eslint": "^8.46.0",
"eslint-config-icebreaker": "^1.2.2",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier": "^5.0.0",
"@tailwindcss-mangle/core": "workspace:*",
"@tailwindcss-mangle/shared": "workspace:*",
"@tsconfig/recommended": "^1.0.2",
"@types/lodash-es": "^4.17.8",
"@types/node": "^20.4.8",
"@vitest/coverage-v8": "^0.34.1",
"cross-env": "^7.0.3",
"eslint": "^8.46.0",
"eslint-plugin-unicorn": "^48.0.1",
"dedent": "^1.5.1",
"defu": "^6.1.2",
"del": "^7.0.0",
"lodash-es": "^4.17.21",
"only-allow": "^1.1.1",
"prettier": "^3.0.1",
"rollup": "^3.27.2",
"tailwindcss-mangle-core": "workspace:*",
"tailwindcss-mangle-shared": "workspace:*",
"tailwindcss-patch": "workspace:*",
"ts-node": "^10.9.1",
"tslib": "^2.6.1",
"typescript": "^5.1.6",
"unbuild": "^1.2.1",
"unplugin-tailwindcss-mangle": "workspace:*",
"vitest": "^0.34.1",
"dedent": "^1.5.1",
"defu": "^6.1.2",
"del": "^7.0.0",
"tslib": "^2.6.1"
"vitest": "^0.34.1"
},
"engines": {
"node": ">=16.6.0"
Expand Down
3 changes: 3 additions & 0 deletions packages/config/build.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { defineBuildConfig } from 'unbuild'

export default defineBuildConfig({})
55 changes: 55 additions & 0 deletions packages/config/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"name": "@tailwindcss-mangle/config",
"version": "1.0.0",
"description": "The config and load function of tailwindcss-mangle",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.mjs",
"require": "./dist/index.cjs"
}
},
"typesVersions": {
"*": {
"*": [
"./dist/*",
"./dist/index.d.ts"
]
}
},
"main": "./dist/index.cjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"files": [
"dist"
],
"scripts": {
"build": "unbuild",
"test": "vitest run",
"test:dev": "vitest"
},
"keywords": [
"tailwindcss",
"mangle",
"patch",
"core",
"mangle",
"shared",
"utils"
],
"author": "SonOfMagic <qq1324318532@gmail.com>",
"license": "MIT",
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
},
"dependencies": {
"c12": "^1.4.2",
"dedent": "^1.5.1"
},
"homepage": "https://github.com/sonofmagic/tailwindcss-mangle",
"repository": {
"type": "git",
"url": "git+https://github.com/sonofmagic/tailwindcss-mangle.git"
}
}
31 changes: 31 additions & 0 deletions packages/config/src/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import path from 'node:path'
import fs from 'node:fs/promises'
import { loadConfig, createDefineConfig } from 'c12'
import dedent from 'dedent'
import type { UserConfig } from './types'
import { getDefaultUserConfig } from './defaults'
import { configName } from './constants'

export function getConfig(cwd?: string) {
return loadConfig<UserConfig>({
name: configName,
defaults: {
...getDefaultUserConfig()
},
cwd
})
}

export const defineConfig = createDefineConfig<UserConfig>()

export function initConfig(cwd: string) {
return fs.writeFile(
path.resolve(cwd, `${configName}.config.ts`),
dedent`
import { defineConfig } from 'tailwindcss-patch'
export default defineConfig({})
`,
'utf8'
)
}
1 change: 1 addition & 0 deletions packages/config/src/constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const configName = 'tailwindcss-mangle'
18 changes: 18 additions & 0 deletions packages/config/src/defaults.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import type { PatchUserConfig, UserConfig } from './types'

export function getDefaultPatchConfig(): PatchUserConfig {
return {
output: {
filename: '.tw-patch/tw-class-list.json',
removeUniversalSelector: true,
loose: true
},
tailwindcss: {}
}
}

export function getDefaultUserConfig(): UserConfig {
return {
patch: getDefaultPatchConfig()
}
}
4 changes: 4 additions & 0 deletions packages/config/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export * from './config'
export * from './defaults'
export * from './constants'
export * from './types'
19 changes: 19 additions & 0 deletions packages/config/src/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
export interface PatchUserConfig {
output?: {
filename?: string

loose?: boolean
/**
* @description remove * in output json
*/
removeUniversalSelector?: boolean
}
tailwindcss?: {
cwd?: string
config?: string
}
}

export interface UserConfig {
patch?: PatchUserConfig
}
25 changes: 25 additions & 0 deletions packages/config/test/__snapshots__/defaults.test.ts.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html

exports[`defaults > getDefaultPatchConfig 1`] = `
{
"output": {
"filename": ".tw-patch/tw-class-list.json",
"loose": true,
"removeUniversalSelector": true,
},
"tailwindcss": {},
}
`;

exports[`defaults > getDefaultUserConfig 1`] = `
{
"patch": {
"output": {
"filename": ".tw-patch/tw-class-list.json",
"loose": true,
"removeUniversalSelector": true,
},
"tailwindcss": {},
},
}
`;
16 changes: 16 additions & 0 deletions packages/config/test/defaults.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { omit } from 'lodash-es'
import { getDefaultPatchConfig, getDefaultUserConfig } from '@/defaults'

function omitCwdPath(o: any) {
return omit(o, ['tailwindcss.cwd', 'patch.tailwindcss.cwd'])
}

describe('defaults', () => {
it('getDefaultPatchConfig', () => {
expect(omitCwdPath(getDefaultPatchConfig())).toMatchSnapshot()
})

it('getDefaultUserConfig', () => {
expect(omitCwdPath(getDefaultUserConfig())).toMatchSnapshot()
})
})
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { defineConfig } from 'tailwindcss-patch'

export default defineConfig({
patch: {
output: {
filename: 'xxx/yyy/zzz.json',
loose: false,
removeUniversalSelector: false
},
tailwindcss: {
cwd: 'aaa/bbb/cc'
}
}
})
40 changes: 40 additions & 0 deletions packages/config/test/index.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { resolve } from 'node:path'
import { existsSync } from 'node:fs'
import { deleteAsync } from 'del'
import { fixturesRoot } from './utils'
import { initConfig, getConfig } from '@/index'
import { getDefaultUserConfig } from '@/defaults'
import { configName } from '@/constants'

describe('config', () => {
it('0.default', async () => {
const cwd = resolve(fixturesRoot, './config/0.default')
const configPath = resolve(cwd, `${configName}.config.ts`)
if (existsSync(configPath)) {
await deleteAsync(configPath)
}

await initConfig(cwd)
expect(existsSync(configPath)).toBe(true)

const { config } = await getConfig(cwd)
expect(config).toEqual(getDefaultUserConfig())
})

it('1.change-options', async () => {
const cwd = resolve(fixturesRoot, './config/1.change-options')
const { config } = await getConfig(cwd)
expect(config).toEqual({
patch: {
output: {
filename: 'xxx/yyy/zzz.json',
loose: false,
removeUniversalSelector: false
},
tailwindcss: {
cwd: 'aaa/bbb/cc'
}
}
})
})
})
3 changes: 3 additions & 0 deletions packages/config/test/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import path from 'node:path'

export const fixturesRoot = path.resolve(__dirname, './fixtures')
15 changes: 15 additions & 0 deletions packages/config/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": [
"src/*"
]
}
},
"include": [
"src",
"test"
]
}
Loading

0 comments on commit a4de2ba

Please sign in to comment.