Zihua Li 1 год назад
Родитель
Сommit
c380874e5e

+ 0 - 1
.eslintignore

@@ -1,3 +1,2 @@
 dist/
-docs/
 _develop

+ 1 - 4
.github/workflows/_e2e.yml

@@ -15,7 +15,4 @@ jobs:
       - name: Install Playwright Browsers
         run: npx playwright install --with-deps
       - name: Run Playwright tests
-        run: |
-          npm start &
-          sleep 120
-          npx playwright test
+        run: npm run test:e2e -w quill

+ 1 - 1
.github/workflows/_fuzz.yml

@@ -18,4 +18,4 @@ jobs:
       - run: npm ci
         env:
           PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1
-      - run: npm run test:fuzz
+      - run: npm run test:fuzz -w quill

+ 1 - 1
.github/workflows/_unit.yml

@@ -22,6 +22,6 @@ jobs:
       - run: npm ci
       - run: npx playwright install --with-deps
       - run: npm run lint
-      - run: npm run test:unit || npm run test:unit || npm run test:unit
+      - run: npm run test:unit -w quill || npm run test:unit -w quill || npm run test:unit -w quill
         env:
           BROWSER: ${{ matrix.browser }}

+ 7 - 5
.gitignore

@@ -5,11 +5,13 @@
 !.gitignore
 !.github
 
-/dist
-/node_modules
+dist
+node_modules
 /selenium
 /src
 *.d.ts
+!custom.d.ts
+!vitest.d.ts
 *.js.map
 *.log
 
@@ -25,6 +27,6 @@ e2e/**/*.js
 
 core.js
 quill.js
-/test-results/
-/playwright-report/
-/playwright/.cache/
+test-results/
+playwright-report/
+playwright/.cache/

+ 0 - 122
_develop/webpack.config.js

@@ -1,122 +0,0 @@
-const path = require('path');
-const webpack = require('webpack');
-const MiniCssExtractPlugin = require('mini-css-extract-plugin');
-const pkg = require('../package.json');
-
-const bannerPack = new webpack.BannerPlugin({
-  banner: [
-    `Quill Editor v${pkg.version}`,
-    'https://quilljs.com/',
-    'Copyright (c) 2014, Jason Chen',
-    'Copyright (c) 2013, salesforce.com',
-  ].join('\n'),
-  entryOnly: true,
-});
-const constantPack = new webpack.DefinePlugin({
-  QUILL_VERSION: JSON.stringify(pkg.version),
-});
-
-const source = [
-  'quill.ts',
-  'core.ts',
-  'blots',
-  'core',
-  'formats',
-  'modules',
-  'test',
-  'themes',
-  'ui',
-].map(file => {
-  return path.resolve(__dirname, '..', file);
-});
-
-const jsRules = {
-  test: /\.(j|t)s$/,
-  include: source,
-  use: ['babel-loader'],
-};
-
-const svgRules = {
-  test: /\.svg$/,
-  include: [path.resolve(__dirname, '../assets/icons')],
-  use: [
-    {
-      loader: 'html-loader',
-      options: {
-        minimize: true,
-      },
-    },
-  ],
-};
-
-const stylRules = {
-  test: /\.styl$/,
-  include: [path.resolve(__dirname, '../assets')],
-  use: [MiniCssExtractPlugin.loader, 'css-loader', 'stylus-loader'],
-};
-
-const baseConfig = {
-  mode: 'development',
-  context: path.resolve(__dirname, '..'),
-  entry: {
-    'quill.js': ['./quill.ts'],
-    'quill.core.js': ['./core.ts'],
-    'quill.core': './assets/core.styl',
-    'quill.bubble': './assets/bubble.styl',
-    'quill.snow': './assets/snow.styl',
-  },
-  output: {
-    filename: '[name]',
-    library: 'Quill',
-    libraryExport: 'default',
-    libraryTarget: 'umd',
-    path: path.resolve(__dirname, '../dist/'),
-    clean: true,
-  },
-  resolve: {
-    extensions: ['.js', '.styl', '.ts'],
-  },
-  module: {
-    rules: [jsRules, stylRules, svgRules],
-    noParse: [
-      /\/node_modules\/clone\/clone\.js$/,
-      /\/node_modules\/eventemitter3\/index\.js$/,
-      /\/node_modules\/extend\/index\.js$/,
-    ],
-  },
-  plugins: [
-    bannerPack,
-    constantPack,
-    new MiniCssExtractPlugin({
-      filename: '[name].css',
-    }),
-  ],
-  devServer: {
-    static: {
-      directory: path.resolve(__dirname, '../dist'),
-    },
-    hot: false,
-    port: process.env.npm_package_config_ports_webpack,
-    allowedHosts: 'all',
-    devMiddleware: {
-      stats: 'minimal',
-    },
-  },
-};
-
-module.exports = env => {
-  if (env?.minimize) {
-    const { devServer, ...prodConfig } = baseConfig;
-    return {
-      ...prodConfig,
-      mode: 'production',
-      entry: { 'quill.min.js': './quill.ts' },
-      devtool: 'source-map',
-    };
-  }
-  if (env?.coverage) {
-    baseConfig.module.rules[0].use[0].options.plugins = ['istanbul'];
-    return baseConfig;
-  }
-  return baseConfig;
-};

Разница между файлами не показана из-за своего большого размера
+ 279 - 626
package-lock.json


+ 9 - 62
package.json

@@ -1,5 +1,5 @@
 {
-  "name": "quill",
+  "name": "quill-monorepo",
   "version": "2.0.0-dev.4",
   "description": "Your powerful, rich text editor",
   "author": "Jason Chen <jhchen7@gmail.com>",
@@ -13,51 +13,8 @@
     }
   },
   "workspaces": [
-    "website"
+    "packages/*"
   ],
-  "dependencies": {
-    "eventemitter3": "^4.0.7",
-    "parchment": "^3.0.0-alpha.1",
-    "quill-delta": "^5.1.0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.22.5",
-    "@babel/preset-env": "^7.22.5",
-    "@babel/preset-typescript": "^7.22.5",
-    "@playwright/test": "^1.39.0",
-    "@types/lodash-es": "^4.17.11",
-    "@typescript-eslint/eslint-plugin": "^6.9.1",
-    "@typescript-eslint/parser": "^6.9.1",
-    "@vitest/browser": "^0.34.6",
-    "babel-loader": "^9.1.2",
-    "babel-plugin-istanbul": "^6.1.1",
-    "css-loader": "^6.8.1",
-    "eslint": "^8.54.0",
-    "eslint-config-prettier": "^9.0.0",
-    "eslint-import-resolver-webpack": "^0.13.8",
-    "eslint-plugin-import": "^2.29.0",
-    "eslint-plugin-jsx-a11y": "^6.8.0",
-    "eslint-plugin-prettier": "^5.0.1",
-    "highlight.js": "^9.18.1",
-    "html-loader": "^4.2.0",
-    "http-proxy": "^1.18.0",
-    "jsdom": "^22.1.0",
-    "lodash": "^4.17.15",
-    "lodash-es": "^4.17.21",
-    "mini-css-extract-plugin": "^2.7.6",
-    "npm-run-all": "^4.1.5",
-    "prettier": "^3.0.3",
-    "style-loader": "^3.3.3",
-    "stylus": "^0.62.0",
-    "stylus-loader": "^7.1.3",
-    "ts-loader": "^9.5.0",
-    "ts-node": "^10.9.1",
-    "typescript": "^5.2.2",
-    "vitest": "^0.34.6",
-    "webpack": "^5.89.0",
-    "webpack-cli": "^5.1.4",
-    "webpack-dev-server": "^4.15.1"
-  },
   "license": "BSD-3-Clause",
   "repository": {
     "type": "git",
@@ -73,26 +30,16 @@
     "defaults"
   ],
   "scripts": {
-    "build": "npm run build:typescript && npm run build:webpack",
-    "build:typescript": "tsc -p tsconfig.npm.json",
-    "build:webpack": "webpack --config _develop/webpack.config.js",
-    "build:release": "./_develop/scripts/release.sh",
-    "develop": "npm run start",
-    "lint": "npm run lint:eslint && npm run lint:tsc",
-    "lint:eslint": "eslint .",
-    "lint:tsc": "tsc --noEmit --skipLibCheck",
-    "prepare": "npm run build",
+    "build": "npm run build:quill && npm run build:website",
+    "build:quill": "npm run build -w quill",
+    "build:website": "npm run build -w website",
     "start": "USE_LOCAL_FILE=true run-p start:*",
-    "start:webpack": "webpack-dev-server --config _develop/webpack.config.js",
+    "start:quill": "npm start -w quill",
     "start:website": "run-s website:build website:serve",
     "start:proxy": "node _develop/proxy.js",
-    "website:build": "npm run build -w website",
-    "website:serve": "npm run serve -w website -- --port $npm_package_config_ports_gatsby",
-    "website:develop": "npm run develop -w website -- --port $npm_package_config_ports_gatsby",
-    "test": "run-s test:*",
-    "test:unit": "vitest --config test/unit/vitest.config.ts",
-    "test:fuzz": "vitest --config test/fuzz/vitest.config.ts",
-    "test:e2e": "playwright test"
+    "lint": "npm run lint -w quill",
+    "serve:website": "npm run serve -w website -- --port $npm_package_config_ports_gatsby",
+    "develop:website": "npm run develop -w website -- --port $npm_package_config_ports_gatsby"
   },
   "keywords": [
     "editor",

+ 2 - 2
.eslintrc.json → packages/quill/.eslintrc.json

@@ -9,11 +9,11 @@
   "settings": {
     "import/resolver": {
       "webpack": {
-        "config": "_develop/webpack.config.js"
+        "config": "webpack.config.js"
       }
     }
   },
-  "ignorePatterns": ["website/**/*", "*.js"],
+  "ignorePatterns": ["*.js", "*.d.ts"],
   "overrides": [
     {
       "files": ["**/*.ts"],

+ 0 - 0
assets/base.styl → packages/quill/assets/base.styl


Некоторые файлы не были показаны из-за большого количества измененных файлов