1
0
mirror of https://gitee.com/bitdance-team/chrome-extension synced 2025-01-10 13:48:14 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee

feat: add monorepo

This commit is contained in:
kaz 2022-01-26 18:46:54 +08:00
parent 1659cde35a
commit 628d37cbc8
65 changed files with 11803 additions and 11 deletions

13
.editorconfig Normal file
View File

@ -0,0 +1,13 @@
# Editor configuration, see http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
max_line_length = off
trim_trailing_whitespace = false

35
.eslintrc.json Normal file
View File

@ -0,0 +1,35 @@
{
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nrwl/nx"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {
"@nrwl/nx/enforce-module-boundaries": [
"error",
{
"enforceBuildableLibDependency": true,
"allow": [],
"depConstraints": [
{
"sourceTag": "*",
"onlyDependOnLibsWithTags": ["*"]
}
]
}
]
}
},
{
"files": ["*.ts", "*.tsx"],
"extends": ["plugin:@nrwl/nx/typescript"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"extends": ["plugin:@nrwl/nx/javascript"],
"rules": {}
}
]
}

39
.gitignore vendored Normal file
View File

@ -0,0 +1,39 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.
# compiled output
/dist
/tmp
/out-tsc
# dependencies
/node_modules
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
# misc
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
yarn-error.log
testem.log
/typings
# System Files
.DS_Store
Thumbs.db

4
.prettierignore Normal file
View File

@ -0,0 +1,4 @@
# Add files here to ignore them from prettier formatting
/dist
/coverage

3
.prettierrc Normal file
View File

@ -0,0 +1,3 @@
{
"singleQuote": true
}

8
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,8 @@
{
"recommendations": [
"nrwl.angular-console",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"firsttris.vscode-jest-runner"
]
}

View File

@ -1,11 +0,0 @@
{
"description": {
"message": "3"
},
"name": {
"message": "2"
},
"tips": {
"message": "1"
}
}

5
jest.config.js Normal file
View File

@ -0,0 +1,5 @@
const { getJestProjects } = require('@nrwl/jest');
module.exports = {
projects: getJestProjects(),
};

3
jest.preset.js Normal file
View File

@ -0,0 +1,3 @@
const nxPreset = require('@nrwl/jest/preset');
module.exports = { ...nxPreset };

23
nx.json Normal file
View File

@ -0,0 +1,23 @@
{
"extends": "@nrwl/workspace/presets/core.json",
"npmScope": "bitdance",
"affected": {
"defaultBase": "master"
},
"cli": {
"defaultCollection": "@nrwl/workspace"
},
"tasksRunnerOptions": {
"default": {
"runner": "@nrwl/workspace/tasks-runners/default",
"options": {
"cacheableOperations": [
"build",
"lint",
"test",
"e2e"
]
}
}
}
}

3871
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

49
package.json Normal file
View File

@ -0,0 +1,49 @@
{
"name": "bitdance",
"version": "0.0.0",
"license": "MIT",
"workspaces": [
"packages/*"
],
"scripts": {
"postinstall": "node node_modules/@nx-plus/vite/patch-nx-dep-graph.js"
},
"private": true,
"dependencies": {
"tslib": "^2.0.0",
"vue": "^3.0.5"
},
"devDependencies": {
"@nrwl/cli": "13.5.3",
"@nrwl/cypress": "^12.0.0",
"@nrwl/eslint-plugin-nx": "13.5.3",
"@nrwl/jest": "^12.0.0",
"@nrwl/js": "13.5.3",
"@nrwl/linter": "^12.0.0",
"@nrwl/tao": "13.5.3",
"@nrwl/workspace": "13.5.3",
"@nx-plus/vite": "^12.2.0",
"@types/jest": "27.0.2",
"@types/node": "16.11.7",
"@typescript-eslint/eslint-plugin": "~5.3.0",
"@typescript-eslint/parser": "~5.3.0",
"@vitejs/plugin-vue": "^2.0.0",
"@vue/eslint-config-prettier": "6.0.0",
"@vue/eslint-config-typescript": "^5.0.2",
"@vue/test-utils": "^2.0.0-0",
"cypress": "^8.3.0",
"eslint": "8.2.0",
"eslint-config-prettier": "8.1.0",
"eslint-plugin-cypress": "^2.10.3",
"eslint-plugin-prettier": "^3.1.3",
"eslint-plugin-vue": "^7.0.0-0",
"jest": "27.2.3",
"jest-serializer-vue": "^2.0.2",
"jest-transform-stub": "^2.0.0",
"prettier": "^2.5.1",
"ts-jest": "27.0.5",
"typescript": "~4.4.3",
"vite": "^2.7.1",
"vue3-jest": "^27.0.0-alpha.1"
}
}

View File

@ -0,0 +1,12 @@
module.exports = {
extends: [
'../../.eslintrc.json',
'plugin:vue/vue3-essential',
'@vue/typescript/recommended',
'prettier',
],
rules: {},
ignorePatterns: ['!**/*'],
env: { node: true },
overrides: [{ files: ['**/*.spec.{j,t}s?(x)'], env: { jest: true } }],
};

View File

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite App</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

View File

@ -0,0 +1,21 @@
module.exports = {
displayName: 'plugin-ui',
preset: '../../jest.preset.js',
transform: {
'^.+.vue$': 'vue3-jest',
'.+.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$':
'jest-transform-stub',
'^.+.tsx?$': 'ts-jest',
},
moduleFileExtensions: ['ts', 'tsx', 'vue', 'js', 'json'],
coverageDirectory: '../../coverage/packages/plugin-ui',
snapshotSerializers: ['jest-serializer-vue'],
globals: {
'ts-jest': {
tsconfig: 'packages/plugin-ui/tsconfig.spec.json',
},
'vue-jest': {
tsConfig: 'packages/plugin-ui/tsconfig.spec.json',
},
},
};

View File

@ -0,0 +1,35 @@
{
"root": "packages/plugin-ui",
"projectType": "application",
"sourceRoot": "packages/plugin-ui/src",
"targets": {
"build": {
"executor": "@nx-plus/vite:build",
"options": {
"config": "packages/plugin-ui/vite.config.ts"
}
},
"serve": {
"executor": "@nx-plus/vite:server",
"options": {
"config": "packages/plugin-ui/vite.config.ts"
}
},
"lint": {
"executor": "@nrwl/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["packages/plugin-ui/**/*.{ts,tsx,vue}"]
}
},
"test": {
"executor": "@nrwl/jest:jest",
"outputs": ["coverage/packages/plugin-ui"],
"options": {
"jestConfig": "packages/plugin-ui/jest.config.js",
"passWithNoTests": true
}
}
},
"tags": []
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -0,0 +1,27 @@
<template>
<img alt="Vue logo" src="./assets/logo.png" />
<HelloWorld msg="Hello Vue 3 + TypeScript + Vite" />
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import HelloWorld from './components/HelloWorld.vue';
export default defineComponent({
name: 'App',
components: {
HelloWorld,
},
});
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -0,0 +1,69 @@
<template>
<h1>{{ msg }}</h1>
<p>
Recommended IDE setup:
<a href="https://code.visualstudio.com/" target="_blank">VSCode</a>
+
<a
href="https://marketplace.visualstudio.com/items?itemName=octref.vetur"
target="_blank"
>Vetur</a
>
or
<a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a>
(if using
<code>&lt;script setup&gt;</code>)
</p>
<p>See <code>README.md</code> for more information.</p>
<p>
<a href="https://vitejs.dev/guide/features.html" target="_blank"
>Vite Docs</a
>
|
<a href="https://v3.vuejs.org/" target="_blank">Vue 3 Docs</a>
</p>
<button @click="count++">count is: {{ count }}</button>
<p>
Edit
<code>components/HelloWorld.vue</code> to test hot module replacement.
</p>
</template>
<script lang="ts">
import { ref, defineComponent } from 'vue';
export default defineComponent({
name: 'HelloWorld',
props: {
msg: {
type: String,
required: true,
},
},
setup: () => {
const count = ref(0);
return { count };
},
});
</script>
<style scoped>
a {
color: #42b983;
}
label {
margin: 0 0.5em;
font-weight: bold;
}
code {
background-color: #eee;
padding: 2px 4px;
border-radius: 4px;
color: #304455;
}
</style>

View File

@ -0,0 +1,4 @@
import { createApp } from 'vue';
import App from './App.vue';
createApp(App).mount('#app');

6
packages/plugin-ui/src/shims-vue.d.ts vendored Normal file
View File

@ -0,0 +1,6 @@
declare module '*.vue' {
import { DefineComponent } from 'vue';
// eslint-disable-next-line
const component: DefineComponent<{}, {}, any>;
export default component;
}

View File

@ -0,0 +1,10 @@
import { shallowMount } from '@vue/test-utils';
import HelloWorld from '../../src/components/HelloWorld.vue';
describe('HelloWorld.vue', () => {
it('renders props.msg when passed', () => {
const msg = 'new message';
const wrapper = shallowMount(HelloWorld, { props: { msg } });
expect(wrapper.text()).toMatch(msg);
});
});

View File

@ -0,0 +1,18 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"strict": true,
"jsx": "preserve",
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"lib": ["esnext", "dom"],
"types": ["vite/client"],
"composite": true
},
"exclude": ["**/*.spec.ts", "**/*.spec.tsx"],
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}

View File

@ -0,0 +1,13 @@
{
"extends": "../../tsconfig.base.json",
"include": [],
"files": [],
"references": [{
"path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.spec.json"
}
]
}

View File

@ -0,0 +1,13 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"],
"jsx": "preserve",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"composite": true
},
"include": ["**/*.spec.ts", "**/*.spec.tsx", "**/*.d.ts"]
}

View File

@ -0,0 +1,24 @@
import { appRootPath } from '@nrwl/tao/src/utils/app-root';
import vue from '@vitejs/plugin-vue';
import { defineConfig } from 'vite';
import { join } from 'path';
import baseTsConfig from '../../tsconfig.base.json';
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
root: __dirname,
build: {
outDir: '../../dist/packages/plugin-ui',
emptyOutDir: true,
},
resolve: {
alias: Object.entries(baseTsConfig.compilerOptions.paths).reduce(
(acc, [key, paths]) => ({
...acc,
[key]: (paths as string[]).map((path) => join(appRootPath, path)),
}),
{}
),
},
});

View File

@ -0,0 +1,18 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}

View File

@ -0,0 +1,11 @@
# services
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build services` to build the library.
## Running unit tests
Run `nx test services` to execute the unit tests via [Jest](https://jestjs.io).

View File

@ -0,0 +1,14 @@
module.exports = {
displayName: 'services',
preset: '../../jest.preset.js',
globals: {
'ts-jest': {
tsconfig: '<rootDir>/tsconfig.spec.json',
},
},
transform: {
'^.+\\.[tj]s$': 'ts-jest',
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../coverage/packages/services',
};

View File

@ -0,0 +1,5 @@
{
"name": "@bitdance/services",
"version": "0.0.1",
"type": "commonjs"
}

View File

@ -0,0 +1,33 @@
{
"root": "packages/services",
"sourceRoot": "packages/services/src",
"projectType": "library",
"targets": {
"build": {
"executor": "@nrwl/js:tsc",
"outputs": ["{options.outputPath}"],
"options": {
"outputPath": "dist/packages/services",
"main": "packages/services/src/index.ts",
"tsConfig": "packages/services/tsconfig.lib.json",
"assets": ["packages/services/*.md"]
}
},
"lint": {
"executor": "@nrwl/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["packages/services/**/*.ts"]
}
},
"test": {
"executor": "@nrwl/jest:jest",
"outputs": ["coverage/packages/services"],
"options": {
"jestConfig": "packages/services/jest.config.js",
"passWithNoTests": true
}
}
},
"tags": []
}

View File

@ -0,0 +1 @@
export * from './lib/services';

View File

@ -0,0 +1,7 @@
import { services } from './services';
describe('services', () => {
it('should work', () => {
expect(services()).toEqual('services');
});
});

View File

@ -0,0 +1,3 @@
export function services(): string {
return 'services';
}

View File

@ -0,0 +1,22 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"module": "CommonJS",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
},
{
"path": "./tsconfig.spec.json"
}
]
}

View File

@ -0,0 +1,10 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"declaration": true,
"types": []
},
"include": ["**/*.ts"],
"exclude": ["**/*.spec.ts"]
}

View File

@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"]
}

View File

@ -0,0 +1,18 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}

11
packages/shared/README.md Normal file
View File

@ -0,0 +1,11 @@
# shared
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build shared` to build the library.
## Running unit tests
Run `nx test shared` to execute the unit tests via [Jest](https://jestjs.io).

View File

@ -0,0 +1,14 @@
module.exports = {
displayName: 'shared',
preset: '../../jest.preset.js',
globals: {
'ts-jest': {
tsconfig: '<rootDir>/tsconfig.spec.json',
},
},
transform: {
'^.+\\.[tj]s$': 'ts-jest',
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../coverage/packages/shared',
};

View File

@ -0,0 +1,5 @@
{
"name": "@bitdance/shared",
"version": "0.0.1",
"type": "commonjs"
}

View File

@ -0,0 +1,33 @@
{
"root": "packages/shared",
"sourceRoot": "packages/shared/src",
"projectType": "library",
"targets": {
"build": {
"executor": "@nrwl/js:tsc",
"outputs": ["{options.outputPath}"],
"options": {
"outputPath": "dist/packages/shared",
"main": "packages/shared/src/index.ts",
"tsConfig": "packages/shared/tsconfig.lib.json",
"assets": ["packages/shared/*.md"]
}
},
"lint": {
"executor": "@nrwl/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["packages/shared/**/*.ts"]
}
},
"test": {
"executor": "@nrwl/jest:jest",
"outputs": ["coverage/packages/shared"],
"options": {
"jestConfig": "packages/shared/jest.config.js",
"passWithNoTests": true
}
}
},
"tags": []
}

View File

@ -0,0 +1 @@
export * from './lib/shared';

View File

@ -0,0 +1,7 @@
import { shared } from './shared';
describe('shared', () => {
it('should work', () => {
expect(shared()).toEqual('shared');
});
});

View File

@ -0,0 +1,3 @@
export function shared(): string {
return 'shared';
}

View File

@ -0,0 +1,22 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"module": "CommonJS",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
},
{
"path": "./tsconfig.spec.json"
}
]
}

View File

@ -0,0 +1,10 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"declaration": true,
"types": []
},
"include": ["**/*.ts"],
"exclude": ["**/*.spec.ts"]
}

View File

@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"]
}

@ -0,0 +1 @@
Subproject commit 1659cde35abdcd0a9e468c3f8941f1ea40723ad2

View File

View File

@ -0,0 +1 @@
console.log('Hello World');

View File

@ -0,0 +1,7 @@
{
"name": "@bitdance/shell-chrome",
"version": "0.0.0",
"scripts": {
"test": "node index.js"
}
}

View File

@ -0,0 +1,3 @@
{
"root": "packages\\shell-chrome"
}

View File

12
tools/tsconfig.tools.json Normal file
View File

@ -0,0 +1,12 @@
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "../dist/out-tsc/tools",
"rootDir": ".",
"module": "commonjs",
"target": "es5",
"types": ["node"],
"importHelpers": false
},
"include": ["**/*.ts"]
}

24
tsconfig.base.json Normal file
View File

@ -0,0 +1,24 @@
{
"compileOnSave": false,
"compilerOptions": {
"rootDir": ".",
"composite": true,
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es2015",
"module": "esnext",
"lib": ["es2017", "dom"],
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"baseUrl": ".",
"paths": {
"@bitdance/services": ["packages/services/src/index.ts"],
"@bitdance/shared": ["packages/shared/src/index.ts"]
}
},
"exclude": ["node_modules", "tmp"]
}

9
workspace.json Normal file
View File

@ -0,0 +1,9 @@
{
"version": 2,
"projects": {
"plugin-ui": "packages/plugin-ui",
"services": "packages/services",
"shared": "packages/shared",
"shell-chrome": "packages\\shell-chrome"
}
}

7162
yarn.lock Normal file

File diff suppressed because it is too large Load Diff