问题
npm run test
运行不存在的测试
A.k.A:npm run test
、npm run compile
、npm run rebuild
不会删除旧的、不再存在的测试文件。
背景
我正在为VSCode开发一个扩展(使用typescript)。我在不同的文件中设置了几个自动测试。在这个过程的后期,我删除了一些测试文件。然而,npm run test
似乎没有意识到测试被删除的事实,也就是说,它仍然运行测试。删除测试文件文件后,npm run test
仍将运行这些文件中包含的测试(可能是因为它们的javascript等价物仍在编译文件区域中)
具体示例工作流
以下是示例测试文件:
test1.test.ts
,包含test1
test2.test.ts
,包含test2
test3.test.ts
,包含test3
他们(可能)会编译成类似的东西
test1.test.js
test2.test.js
test3.test.js
我运行npm run test
,执行test1
、test2
、test3
。
我删除了test1.test.ts
和test2.test.ts
我运行npm run compile
和npm run rebuild
我运行npm run test
和test1
,test2
,test3
得到执行,即使test2
和test3
应该被删除
问题
如何使npm删除不应该再存在的文件?
我遇到了同样的问题,并执行了以下步骤:
更新tsconfig.json并添加以下行(如果您使用标准构建,这意味着编译的js文件位于"out"目录中)
"outDir": "out"
在包.json 中替换以下脚本定义
"compile-tests": "tsc -p . --outDir out"
带有
"compile-tests": "tsc -b --clean && tsc -b"
请注意,这只会清除typescript编译器知道的已编译文件。孤立的js文件(没有原来的.ts)似乎仍然存在。在这种情况下,您必须回到rm -rf
(另请参阅此处"如何从以前的typescript(.ts)文件中删除已编译的JS文件?")
更新:我最终也使用了rimraf(见链接的答案),这有一个更干净的结果。