initialencounter / 2022-12-24

GNU Affero General Public License v3.0
38 stars 9 forks source link

考虑迁移到 boilerplate 建议的工作区仓库架构吗? #32

Closed shigma closed 10 months ago

shigma commented 10 months ago

简单而言就是:

带来的好处是:

initialencounter commented 10 months ago

好嘞,我试试

initialencounter commented 10 months ago

简单而言就是:

  • 在你的本地重新建立一个新的 boilerplate,并将当前仓库放入 external 的一个子目录(或其他被 gitignore 的目录)
  • 稍微修改 package.json

带来的好处是:

  • 方便别人在模板项目中直接引入你的仓库

这个仓库就是基于 boilerplate 开发的,可以直接引入吧,我试了一下,直接在 boilerplate 执行 yarn clone initialencounter/mykoishi,没问题呀

PS C:\Users\29115\dev\test> yarn clone initialencounter/mykoishi
Cloning into 'external/mykoishi'...
remote: Enumerating objects: 4192, done.
remote: Counting objects: 100% (878/878), done.
remote: Compressing objects: 100% (329/329), done.
remote: Total 4192 (delta 554), reused 848 (delta 537), pack-reused 3314
Receiving objects: 100% (4192/4192), 43.92 MiB | 7.32 MiB/s, done.
Resolving deltas: 100% (2413/2413), done.
[I] workspace added: external/mykoishi/Plugins/*/*
[I] workspace added: external/mykoishi/test
[I] workspace added: external/mykoishi/external/*/external/*
[I] workspace added: external/mykoishi/external/*/external/*/packages/*
[I] workspace added: external/mykoishi/external/*/external/*/packages/@*/*
[I] workspace added: external/mykoishi/external/*/external/*/plugins/*
[I] workspace added: external/mykoishi/external/*/packages/@*/*
[I] workspace added: external/mykoishi/external/satori/adapters/*
[I] workspace added: external/mykoishi/external/koishi/plugins/adapter/*
[I] workspace added: external/mykoishi/external/koishi/plugins/common/*
[I] workspace added: external/mykoishi/external/koishi/plugins/database/*
[I] workspace added: external/mykoishi/packages/@*/*
[I] workspace added: external/mykoishi/plugins/@*/*
➤ YN0000: · Yarn 4.0.1
➤ YN0000: ┌ Resolution step
➤ YN0085: │ + @initencounter/jimp@npm:0.0.3, @initencounter/vits@npm:0.0.2, @koishijs/censor@npm:1.0.2, @koishijs/plugin-adapter-onebot@npm:6.0.2, and 482 more.
➤ YN0000: └ Completed in 1s 841ms
➤ YN0000: ┌ Post-resolution validation
➤ YN0002: │ koishi-plugin-gocqhttp-dev@workspace:external/mykoishi/Plugins/Adapter/gocqhttp-dev doesn't provide koishi-plugin-downloads (p210ec), requested by @yunkuangao/koishi-plugin-qsign.
➤ YN0086: │ Some peer dependencies are incorrectly met; run yarn explain peer-requirements <hash> for details, where <hash> is the six-letter p-prefixed code.
➤ YN0000: └ Completed
➤ YN0000: ┌ Fetch step
➤ YN0000: └ Completed in 1s 11ms
➤ YN0000: ┌ Link step
➤ YN0007: │ koishi-plugin-qsign@workspace:external/mykoishi/Plugins/Adapter/qsign must be built because it never has been before or the last one failed
➤ YN0007: │ leveldown@npm:6.1.1 must be built because it never has been before or the last one failed
➤ YN0007: │ protobufjs@npm:7.2.5 must be built because it never has been before or the last one failed
➤ YN0009: │ koishi-plugin-qsign@workspace:external/mykoishi/Plugins/Adapter/qsign couldn't be built successfully (exit code 1, logs can be found here: C:\Users\29115\AppData\Local\Temp\xfs-48ec2109\build.log)
➤ YN0000: └ Completed in 6s 577ms
➤ YN0000: · Failed with errors in 9s 662ms
node:internal/errors:866
  const err = new Error(message);
              ^

Error: Command failed: yarn exec yakumo prepare
    at checkExecSyncError (node:child_process:890:11)
    at execSync (node:child_process:962:15)
    at CAC.<anonymous> (C:\Users\29115\dev\test\node_modules\@koishijs\scripts\lib\clone.js:42:38)
    at CAC.runMatchedCommand (C:\Users\29115\dev\test\node_modules\cac\dist\index.js:614:34)
    at CAC.parse (C:\Users\29115\dev\test\node_modules\cac\dist\index.js:541:12)
    at Object.<anonymous> (C:\Users\29115\dev\test\node_modules\@koishijs\scripts\lib\bin.js:13:5)
    at Module._compile (node:internal/modules/cjs/loader:1241:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32) {
  status: 1,
  signal: null,
  output: [ null, null, null ],
  pid: 8800,
  stdout: null,
  stderr: null
}

Node.js v20.8.0

PS C:\Users\29115\dev\test> yarn build
vite v4.5.0 building for production...
✓ 27 modules transformed.
✓ built in 1.24s
vite v4.5.0 building for production...
✓ 4 modules transformed.
✓ built in 72ms
vite v4.5.0 building for production...
✓ 12 modules transformed.
✓ built in 316ms
vite v4.5.0 building for production...
✓ 23 modules transformed.
✓ built in 396ms
vite v4.5.0 building for production...
✓ 5 modules transformed.
✓ built in 68ms
PS C:\Users\29115\dev\test> yarn start
2023-12-02 23:57:59 [I] app Koishi/4.15.6
2023-12-02 23:57:59 [I] loader apply plugin group:entry
2023-12-02 23:57:59 [I] loader apply plugin group:basic
2023-12-02 23:57:59 [I] loader apply plugin commands
2023-12-02 23:57:59 [I] loader apply plugin help
2023-12-02 23:57:59 [I] loader apply plugin locales
2023-12-02 23:57:59 [I] loader apply plugin rate-limit
2023-12-02 23:57:59 [I] loader apply plugin telemetry
2023-12-02 23:57:59 [I] loader apply plugin group:console
2023-12-02 23:57:59 [I] loader apply plugin actions
2023-12-02 23:57:59 [I] loader apply plugin analytics
2023-12-02 23:57:59 [I] loader apply plugin config
2023-12-02 23:57:59 [I] loader apply plugin console
2023-12-02 23:57:59 [I] loader apply plugin dataview
2023-12-02 23:57:59 [I] loader apply plugin explorer
2023-12-02 23:57:59 [I] loader apply plugin logger
2023-12-02 23:57:59 [I] loader apply plugin insight
2023-12-02 23:57:59 [I] loader apply plugin market
2023-12-02 23:57:59 [I] loader apply plugin oobe
2023-12-02 23:57:59 [I] loader apply plugin sandbox
2023-12-02 23:57:59 [I] loader apply plugin status
2023-12-02 23:57:59 [I] loader apply plugin theme-vanilla
2023-12-02 23:57:59 [I] loader apply plugin group:storage
2023-12-02 23:57:59 [I] loader apply plugin database-sqlite
2023-12-02 23:57:59 [I] loader apply plugin assets-local
2023-12-02 23:57:59 [I] loader apply plugin group:adapter
2023-12-02 23:57:59 [I] assets missing config "selfUrl", fallback to "file:" scheme
2023-12-02 23:57:59 [I] router server listening at http://127.0.0.1:5141
shigma commented 10 months ago

这个仓库就是基于 boilerplate 开发的,可以直接引入吧,我试了一下,直接在 boilerplate 执行 yarn clone initialencounter/mykoishi,没问题呀

这样装的话会额外装你根工作区 package.json 里的依赖,应该是不需要的吧?

而且,目前这样得 build 才能启动,不能直接 dev。

initialencounter commented 10 months ago

我迁移到 boilerplate 建议的工作区仓库架构后,创建了一个bp, 执行 yarn clone initialencounter/mykoishi 然后直接执行 yarn dev 似乎不行, 还是要 build

PS C:\Users\29115\dev\test> yarn clone initialencounter/mykoishi
Cloning into 'external/mykoishi'...
remote: Enumerating objects: 4343, done.
remote: Counting objects: 100% (1029/1029), done.
remote: Compressing objects: 100% (406/406), done.
remote: Total 4343 (delta 612), reused 989 (delta 586), pack-reused 3314
Receiving objects: 100% (4343/4343), 44.89 MiB | 10.01 MiB/s, done.
Resolving deltas: 100% (2471/2471), done.
[W] workspace mismatch: external/mykoishi/external/mykoishi/external/*/packages/*
[W] workspace mismatch: external/mykoishi/external/mykoishi/external/*/plugins/*
[W] workspace mismatch: external/mykoishi/external/mykoishi/external/koishi/plugins/*
➤ YN0000: · Yarn 4.0.1
➤ YN0000: ┌ Resolution step
➤ YN0000: └ Completed in 0s 309ms
➤ YN0000: ┌ Post-resolution validation
➤ YN0002: │ koishi-plugin-gocqhttp-dev@workspace:external/mykoishi/external/mykoishi/Plugins/Adapter/gocqhttp-dev doesn't provide koishi-plugin-downloads (p93fbf), requested by @yunkuangao/koishi-plugin-qsign.
➤ YN0086: │ Some peer dependencies are incorrectly met; run yarn explain peer-requirements <hash> for details, where <hash> is the six-letter p-prefixed code.
➤ YN0000: └ Completed
➤ YN0000: ┌ Fetch step
➤ YN0000: └ Completed in 1s 59ms
➤ YN0000: ┌ Link step
➤ YN0007: │ koishi-plugin-qsign@workspace:external/mykoishi/external/mykoishi/Plugins/Adapter/qsign must be built because it never has been before or the last one failed
➤ YN0009: │ koishi-plugin-qsign@workspace:external/mykoishi/external/mykoishi/Plugins/Adapter/qsign couldn't be built successfully (exit code 1, logs can be found here: C:\Users\29115\AppData\Local\Temp\xfs-ff01b335\build.log)
➤ YN0000: └ Completed in 0s 918ms
➤ YN0000: · Failed with errors in 2s 502ms
node:internal/errors:866
  const err = new Error(message);
              ^

Error: Command failed: yarn
    at checkExecSyncError (node:child_process:890:11)
    at execSync (node:child_process:962:15)
    at CAC.<anonymous> (C:\Users\29115\dev\test\node_modules\@koishijs\scripts\lib\clone.js:44:38)
    at CAC.runMatchedCommand (C:\Users\29115\dev\test\node_modules\cac\dist\index.js:614:34)
    at CAC.parse (C:\Users\29115\dev\test\node_modules\cac\dist\index.js:541:12)
    at Object.<anonymous> (C:\Users\29115\dev\test\node_modules\@koishijs\scripts\lib\bin.js:13:5)
    at Module._compile (node:internal/modules/cjs/loader:1241:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32) {
  status: 1,
  signal: null,
  output: [ null, null, null ],
  pid: 19080,
  stdout: null,
  stderr: null
}

Node.js v20.8.0
PS C:\Users\29115\dev\test> yarn dev
2023-12-03 01:03:38 [I] app Koishi/4.15.6
2023-12-03 01:03:38 [I] loader apply plugin group:entry
2023-12-03 01:03:38 [I] loader apply plugin group:basic
2023-12-03 01:03:38 [I] loader apply plugin commands
2023-12-03 01:03:38 [I] loader apply plugin help
2023-12-03 01:03:38 [I] loader apply plugin locales
2023-12-03 01:03:38 [I] loader apply plugin rate-limit
2023-12-03 01:03:38 [I] loader apply plugin telemetry
2023-12-03 01:03:38 [I] loader apply plugin group:console
2023-12-03 01:03:38 [I] loader apply plugin actions
2023-12-03 01:03:38 [I] loader apply plugin analytics
2023-12-03 01:03:38 [I] loader apply plugin config
2023-12-03 01:03:38 [I] loader apply plugin console
2023-12-03 01:03:38 [I] loader apply plugin dataview
2023-12-03 01:03:38 [I] loader apply plugin explorer
2023-12-03 01:03:39 [I] loader apply plugin logger
2023-12-03 01:03:39 [I] loader apply plugin insight
2023-12-03 01:03:39 [I] loader apply plugin market
2023-12-03 01:03:39 [I] loader apply plugin oobe
2023-12-03 01:03:39 [I] loader apply plugin sandbox
2023-12-03 01:03:39 [I] loader apply plugin status
2023-12-03 01:03:39 [I] loader apply plugin theme-vanilla
2023-12-03 01:03:39 [I] loader apply plugin group:storage
2023-12-03 01:03:39 [I] loader apply plugin database-sqlite
2023-12-03 01:03:39 [I] loader apply plugin assets-local
2023-12-03 01:03:39 [I] loader apply plugin group:adapter
2023-12-03 01:03:39 [I] loader apply plugin group:develop
2023-12-03 01:03:39 [I] loader apply plugin hmr
2023-12-03 01:03:39 [I] assets missing config "selfUrl", fallback to "file:" scheme
2023-12-03 01:03:39 [I] router server listening at http://127.0.0.1:5140
2023-12-03 01:03:40 [W] config failed to resolve @initencounter/koishi-plugin-jimp
2023-12-03 01:03:40 [W] config Error: Cannot find module 'C:\Users\29115\dev\test\node_modules\@initencounter\koishi-plugin-jimp\lib\index.js'. Please verify that the package.json has a valid "main" entry
                            at tryPackage (node:internal/modules/cjs/loader:415:19)
                            at Module._findPath (node:internal/modules/cjs/loader:665:18)
                            at Module._resolveFilename (node:internal/modules/cjs/loader:1034:27)
                            at Module._resolveFilename (C:\Users\29115\dev\test\node_modules\esbuild-register\dist\node.js:4787:36)
                            at Function.resolve (node:internal/modules/helpers:136:19)
                            at _PackageScanner.loadPackage (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:62:29)
                            at _PackageScanner.loadDirectory (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:51:18)
                            at async Promise.all (index 0)
                            at _PackageScanner._collect (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:31:5)
                            at _PackageScanner.collect (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:36:5)
2023-12-03 01:03:42 [W] config failed to resolve koishi-plugin-adapter-wechaty
2023-12-03 01:03:42 [W] config Error: Cannot find module 'C:\Users\29115\dev\test\node_modules\koishi-plugin-adapter-wechaty\lib\index.js'. Please verify that the package.json has a valid "main" entry
                            at tryPackage (node:internal/modules/cjs/loader:415:19)
                            at Module._findPath (node:internal/modules/cjs/loader:665:18)
                            at Module._resolveFilename (node:internal/modules/cjs/loader:1034:27)
                            at Module._resolveFilename (C:\Users\29115\dev\test\node_modules\esbuild-register\dist\node.js:4787:36)
                            at Function.resolve (node:internal/modules/helpers:136:19)
                            at _PackageScanner.loadPackage (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:62:29)
                            at _PackageScanner.loadDirectory (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:45:14)
                            at async Promise.all (index 0)
                            at _PackageScanner._collect (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:31:5)
                            at _PackageScanner.collect (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:36:5)
2023-12-03 01:03:42 [W] config failed to resolve koishi-plugin-arcadia
2023-12-03 01:03:42 [W] config Error: Cannot find module 'C:\Users\29115\dev\test\node_modules\koishi-plugin-arcadia\lib\index.js'. Please verify that the package.json has a valid "main" entry
                            at tryPackage (node:internal/modules/cjs/loader:415:19)
                            at Module._findPath (node:internal/modules/cjs/loader:665:18)
                            at Module._resolveFilename (node:internal/modules/cjs/loader:1034:27)
                            at Module._resolveFilename (C:\Users\29115\dev\test\node_modules\esbuild-register\dist\node.js:4787:36)
                            at Function.resolve (node:internal/modules/helpers:136:19)
                            at _PackageScanner.loadPackage (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:62:29)
                            at _PackageScanner.loadDirectory (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:45:14)
                            at async Promise.all (index 0)
                            at _PackageScanner._collect (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:31:5)
                            at _PackageScanner.collect (C:\Users\29115\dev\test\node_modules\@koishijs\registry\src\local.ts:36:5)
2023-12-03 01:03:42 [W] config failed to resolve***
shigma commented 10 months ago

啊,你没有理解迁移到工作区的意思 🤣 可以看看这篇文章

https://koishi.chat/zh-CN/cookbook/design/workspace.html

shigma commented 10 months ago

我迁移到 boilerplate 建议的工作区仓库架构后,创建了一个bp, 执行 yarn clone initialencounter/mykoishi 然后直接执行 yarn dev 似乎不行, 还是要 build

这个部分主要是因为没有妥善配置 tsconfig 导致的。如果希望使用默认的 dev 设置,建议使用 packages 目录。在正确迁移到工作区仓库之后剩下的工作可以交给 Koishi 侧完成。