-
Notifications
You must be signed in to change notification settings - Fork 54
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
feat: support typescript #89
Conversation
Codecov Report
@@ Coverage Diff @@
## master #89 +/- ##
=====================================
Coverage 100% 100%
=====================================
Files 11 11
Lines 167 183 +16
=====================================
+ Hits 167 183 +16
Continue to review full report at Codecov.
|
713b0fb
to
266abdd
Compare
更新了下,依赖 node-modules/common-bin#20 |
@@ -80,6 +80,8 @@ $ egg-bin dev | |||
- `--port` server port, default to `7001`. | |||
- `--cluster` worker process number, skip this argvs will start only `1` worker, provide this without value will start `cpu` count worker. | |||
- `--sticky` start a sticky cluster server, default to `false`. | |||
- `--typescript` / `--ts` enable typescript support, default to `false`. | |||
- `--require` will add to `execArgv`, support multiple. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这些 flag 能否支持一下在 package.json 中配置,这样就不需要在每个 scripts 中都去加 --ts 了
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
其实还期望能否有 --require.once
这种 flag,就是能够在跑 egg 应用前跑一段 js,--require 是每起一个 child_process 也都会运行一次,如果我想在跑 egg 前,跑生成 d.ts 的程序(并且 watch 文件更改重新生成 d.ts),其实是不需要每个子进程都跑一次这个的,不然就起了一堆的 watcher 了
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
--require
是加到 execArgv 的,这个在 fork 里面就会默认继承的,所以肯定会跑一次。package.json
那个可以做,下个 PR 看看
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
是啊,--require 是全部会继承的,就是说能否提供个能力,只运行一次的 require?比如在运行 egg 之前跑一次 tsc,或者跑一次 babel parse,这样就不需要在 scripts 中写 tsc && egg-bin dev
或者 tsc && egg-bin test
了,再加上支持配置在 package.json 中的话,那 scripts 中就只需要 egg-bin dev
及 egg-bin test
了
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这个 PR 做完后,就不需要 tsc 了啊,不是有 ts-node 了么。
你这个需求感觉更类似于 npm scripts 本身的 beforeTest
/ beforeStart
的 hook
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
我知道,只是举个 tsc 的例子,对,就是类似于 beforeTest,但是 npm scripts 没有通用的 before,所以想 egg-bin 能否提供
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这个不在这个 PR 的范畴内,等这个完后,考虑如何集成你的 ets 的时候再考虑。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tsc 要的,发布构建需要。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tsc 是构建发布那个流程的,这块是开发期辅助,不冲突。
构建那个不会存在他说的 require
8881fad
to
dd0a889
Compare
@@ -14,7 +14,14 @@ describe('test/lib/cmd/cov.test.js', () => { | |||
beforeEach(() => rimraf(path.join(cwd, 'coverage'))); | |||
afterEach(mm.restore); | |||
|
|||
it('should success', done => { | |||
function assertCoverage(cwd) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
哭,CI 上整体忽略掉这个,过 cov ci
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
有可能是 nyc 改了
@@ -0,0 +1,28 @@ | |||
'use strict'; | |||
|
|||
require('ts-node').register({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这些配置和 tsconfig 啥关系
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这里提供默认值,应用层 tsconfig.json
可以覆盖
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
那最好只读 tsconfig.json,这个默认配置和 ts-node 的有差异?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这里的配置是针对 Node 应用的,ts-node 会考虑到前端应用,所以默认值不一样。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
最新的已经去掉默认值了。开发者自己配置
egg-cluster 没改? |
egg-cluster 还没改,现在反正是透传的。 那边也只是加一个文档就 ok 了。 |
没 egg-cluster 测的不真实吧 |
这个可以加一个用例,之前是 egg-core 还没法版本。 |
@popomore egg-cluster 那边加了用例了。这边不太好加,egg-bin 还没 drop 6.x support,用的是 egg@1 ,这个看这么搞? Update:
|
"strict": true, | ||
"moduleResolution": "node", | ||
"noImplicitAny": false, | ||
"experimentalDecorators": true, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这里有没有一些可以精简掉
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
已经精简了,将跟默认值一样的值去掉了
test/ts.test.js
Outdated
@@ -17,7 +17,7 @@ describe('test/ts.test.js', () => { | |||
.debug() | |||
.expect('stdout', /### egg from ts/) | |||
.expect('stdout', /options.typescript=true/) | |||
.expect('stdout', /egg started/) | |||
.expect('stdout', /started/) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这个判断为啥干掉
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
在 Egg version 2 里,好像不会输出 egg stared 的内容,只会输出 application stared 等
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
所以单测一直跪在 egg@2 ,改成 stared 就正常了
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sleep 的时间不够吧
ts-helper.js 不能干掉啊,默认的 register 是不带 typeCheck 的 |
指的是干掉默认的 tsconfig |
看起来没啥问题 |
4.5.0 |
[skip ci] ## 1.0.0 (2022-12-17) ### Features * add `egg-bin autod --check` command ([#70](#70)) ([0f0c7ab](0f0c7ab)) * add COV_EXCLUDES for coverage excludes ([#7](#7)) ([a33e561](a33e561)) * add sticky mode support ([#32](#32)) ([f5a1152](f5a1152)) * add ts env in command ([#98](#98)) ([756310e](756310e)) * allow loading ts compiler from cwd ([#169](#169)) ([4a54cec](4a54cec)) * auto detect available port ([#22](#22)) ([6d7ad41](6d7ad41)) * auto require setup file ([#24](#24)) ([a847750](a847750)) * build-in intelli-espower-loader ([#20](#20)) ([4e86a67](4e86a67)) * change default timeout to 60000 ([#50](#50)) ([cbc9263](cbc9263)) * commands support specific execArgv(harmony) ([#33](#33)) ([0c7108b](0c7108b)) * cov support output json-summary ([#64](#64)) ([c1de734](c1de734)) * cov support typescript ([#91](#91)) ([8a05e19](8a05e19)) * **cov:** add nyc instrument passthrough ([#103](#103)) ([8fa805b](8fa805b)) * **cov:** add prerequire option ([#53](#53)) ([055c47f](055c47f)) * **cov:** add prerequire option ([#53](#53)) ([a6a2b4a](a6a2b4a)) * debug proxy support ([678b83d](678b83d)) * **debug:** [BREAKING_CHANGE] remove iron-node ([#26](#26)) ([9d4170f](9d4170f)) * default enable c8 report ([#189](#189)) ([72e925b](72e925b)) * **dev:** pass debug args to execArgv ([#12](#12)) ([92b111f](92b111f)) * egg-bin check ([#87](#87)) ([92b1489](92b1489)) * enable mochawesome by default ([#193](#193)) ([6636e8f](6636e8f)) * expose proc ([#152](#152)) ([dcc9b25](dcc9b25)) * extractArgv refactor & extract debug port ([994616d](994616d)) * extractArgv support expose_debug_as ([6f5d525](6f5d525)) * impl parallel for mocha parallel mode ([#185](#185)) ([78141e8](78141e8)) * intergration with egg-ts-helper ([#123](#123)) ([263cfd1](263cfd1)) * pass --check to pkgfiles ([#48](#48)) ([7b0c995](7b0c995)) * remove correct-source-map.js ([#109](#109)) ([8b62742](8b62742)) * resolve istanbul path for coffee ([#9](#9)) ([147add8](147add8)) * revert egg-bin check ([#90](#90)) ([83322e6](83322e6)) * revert to 4.2.0 ([c65a00d](c65a00d)) * set EGG_MASTER_CLOSE_TIMEOUT when run dev ([#88](#88)) ([c48860c](c48860c)) * should print error stack ([#132](#132)) ([5c621f6](5c621f6)) * simplify mocha error stack ([#59](#59)) ([0b01158](0b01158)) * support $NODE_DEBUG_OPTION ([#71](#71)) ([1340ce7](1340ce7)) * support c8 report ([#172](#172)) ([1e96da2](1e96da2)) * support cov command in win32 ([#52](#52)) ([93b731d](93b731d)) * support egg-bin test --changed ([#111](#111)) ([51f93aa](51f93aa)) * support egg.typescript ([#92](#92)) ([a7f0ca8](a7f0ca8)) * support mocha custom require args ([#5](#5)) ([fb8fd32](fb8fd32)) * support read egg.require from package.json ([#121](#121)) ([904103f](904103f)) * support set eggTsHelper ([#183](#183)) ([f564cbf](f564cbf)) * support switch ts compiler ([#158](#158)) ([a74bae2](a74bae2)) * support typescript ([#89](#89)) ([75b5cd6](75b5cd6)) * test --dry-run ([#145](#145)) ([3cc3b0b](3cc3b0b)) * try to use --inspect first ([#19](#19)) ([d7ad24c](d7ad24c)) * update pkg.files that if file exists ([#37](#37)) ([af5af6a](af5af6a)) * upgrade espower-typescript to 9.0 ([#106](#106)) ([35e89db](35e89db)) * use nyc instead of istanbul ([#63](#63)) ([3cf312c](3cf312c)) * use test when run cov on Windows ([#18](#18)) ([611027f](611027f)), closes [/github.com/eggjs/egg/pull/133#issuecomment-256827488](https://github.com/eggjs//github.com/eggjs/egg/pull/133/issues/issuecomment-256827488) * use unparseArgv from common-bin ([#45](#45)) ([da41b8e](da41b8e)) ### Bug Fixes * --full-trace should be boolean ([#191](#191)) ([bfd7fab](bfd7fab)) * -x only support string ([#47](#47)) ([b79f0cc](b79f0cc)) * .setup.js should be the first test file ([#30](#30)) ([4f45c6b](4f45c6b)) * add missing deps ([#42](#42)) ([86ebc75](86ebc75)) * add power-assert to deps ([#21](#21)) ([8b7ce8d](8b7ce8d)) * auto add .setup.ts file ([#147](#147)) ([00afdf7](00afdf7)) * can not find iron-node in subprocess ([#8](#8)) ([d6a57f5](d6a57f5)) * ci failed ([#162](#162)) ([4a076e6](4a076e6)) * clean more mocha error stack ([#60](#60)) ([9c77118](9c77118)) * conflix source map support ([#181](#181)) ([a1ec4f7](a1ec4f7)) * cov replaced warning at win ([#49](#49)) ([d2850a5](d2850a5)) * **cov:** istanbul path env ([#44](#44)) ([ce8f141](ce8f141)) * **cov:** wait 1 second for Windows ([#16](#16)) ([742f6fc](742f6fc)) * debug at 6.x ([469739f](469739f)) * debug mode detect ([#130](#130)) ([819d78f](819d78f)) * debug-test invoke formatTestArgs ([a82a87a](a82a87a)) * don't pass prerequire ([#57](#57)) ([e0d03d3](e0d03d3)) * downgrade ts-node ([#126](#126)) ([d802694](d802694)) * egginfo is not exists ([#159](#159)) ([8666e9e](8666e9e)) * ets not found ([#124](#124)) ([8f6135e](8f6135e)) * fix cov env ([#188](#188)) ([e18ceda](e18ceda)) * fix ENABLE_MOCHA_PARALLEL/AUTO_AGENT env ([#187](#187)) ([88ba6d5](88ba6d5)) * fix espwoer-typescript inject logic ([#178](#178)) ([2e0fecd](2e0fecd)) * fix source map line number incorrect ([#107](#107)) ([ca4f78f](ca4f78f)), closes [/github.com/TypeStrong/ts-node/blob/master/src/index.ts#L218](https://github.com/eggjs//github.com/TypeStrong/ts-node/blob/master/src/index.ts/issues/L218) * fixed ts-node ignore files ([#105](#105)) ([a790304](a790304)) * force exit when runner complete ([#83](#83)) ([7386194](7386194)) * ignore eggTsHelper on node-test ([#186](#186)) ([c5db00e](c5db00e)) * ignore frontend files and document files ([#65](#65)) ([f9d578e](f9d578e)) * let sub class can override getFrameworkOrEggPath ([1320144](1320144)) * link mocha bin from inner file ([#15](#15)) ([f6cb195](f6cb195)) * make sure dev command eggPath can be override ([#23](#23)) ([22510d7](22510d7)) * make sure files sort in all platforms ([#86](#86)) ([6689962](6689962)) * nyc shim ([#138](#138)) ([3b370ef](3b370ef)) * only hotfix spawn-wrap on windows ([#69](#69)) ([e784a3d](e784a3d)) * package.json to reduce vulnerabilities ([#108](#108)) ([e910ae3](e910ae3)) * package.json to reduce vulnerabilities ([#81](#81)) ([e3c33e9](e3c33e9)) * remove espower typescript ([#160](#160)) ([563923a](563923a)) * remove temp excludes ([40aaca1](40aaca1)) * remove ts extensions by default ([#94](#94)) ([1c860a9](1c860a9)) * revert nyc ([#140](#140)) ([9cb8125](9cb8125)), closes [/github.com//pull/133#issuecomment-489387659](https://github.com/eggjs//github.com/eggjs/egg-bin/pull/133/issues/issuecomment-489387659) * should exit when no test files found ([#100](#100)) ([e375ba4](e375ba4)) * should ignore fixtures and node_modules ([#96](#96)) ([e73c569](e73c569)) * should not timeout when debugging ([#129](#129)) ([3b6819c](3b6819c)) * should only read pkg if argv.typescript not pass ([#97](#97)) ([1e93020](1e93020)) * should pass customEgg to startCluster ([#25](#25)) ([e3d7974](e3d7974)) * should support -p ([#27](#27)) ([df86893](df86893)) * should support multi exclude dirs ([#66](#66)) ([1ac9d68](1ac9d68)) * support --workers same as egg-scripts ([#127](#127)) ([fcae123](fcae123)) * support egg-bin dev --cluster and --baseDir ([#36](#36)) ([ba7d409](ba7d409)) * support node4 ([#35](#35)) ([dbbaf98](dbbaf98)) * support relative path ([#95](#95)) ([7531faa](7531faa)) * There is a case sensitive issue from spawn-wrap on Windows ([#67](#67)) ([56f8518](56f8518)) * use co-mocha instead of thunk-mocha ([#38](#38)) ([f6b5171](f6b5171)) * use context.env instead of process.env ([#58](#58)) ([9aa0030](9aa0030)) * use inspector at 7.x+ ([#74](#74)) ([2e3498e](2e3498e)) * using ts-node in app should check tscompiler and deps ([#170](#170)) ([662b9e9](662b9e9)) * wait more time for Window 😢 ([#17](#17)) ([d6f6b3b](d6f6b3b))
Checklist
npm test
passesAffected core subsystem(s)
Description of change
egg-bin dev
和egg-bin debug
--typescript
参数,会把--require ts-node/register
加入到 execArgvtypescript: true
--require
参数,会加入到execArgv
中egg-bin test
和egg-bin cov
--typescript
参数,会把--require ts-node/register
加入到 execArgvespower-typescript
支持 ts 的 power-assert**/*.test.ts