Skip to content

feat: Feature/unplugin 2.x alpha #36

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Aug 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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