当我开发 NPM 库(作为 ESM 模块)时,WebStorm 显示我的导出未使用。怎么解决?
我的
tsconfig.json
:
{
"compilerOptions": {
"declaration": true,
"declarationDir": "./dist",
"lib": [],
"module": "CommonJS",
"target": "es5",
"sourceMap": true,
"strict": true,
"noImplicitAny": true
},
"include": [
"src"
]
}
我的
package.json
:
{
"name": "",
"version": "0.0.1",
"main": "dist/index.js",
"scripts": {
"build": "gulp clear"
},
"exports": {
".": "./dist/index.js"
},
"devDependencies": {
"@types/node": "^20.4.2",
"fs-extra": "^11.1.1",
"gulp": "^4.0.2",
"gulp-sourcemaps": "^3.0.0",
"gulp-terser": "^2.1.0",
"gulp-typescript": "^6.0.0-alpha.1",
"merge-stream": "^2.0.0",
"typescript": "^5.1.6",
"vinyl-buffer": "^1.0.1"
}
}
gulpfile.js
:
const gulp = require("gulp");
const ts = require("gulp-typescript");
const terser = require("gulp-terser");
const merge = require('merge-stream');
const tsProject = ts.createProject("tsconfig.json");
gulp.task("default", function () {
const tsResult = tsProject
.src()
.pipe(tsProject());
return merge(tsResult.dts, tsResult.js.pipe(terser()))
.pipe(gulp.dest("dist"));
});
为什么会发生这种情况以及如何解决? Snap 上的 WebStorm 2023.1.3
在我看来,WebStorm 无法知道该类是在您的工作空间之外使用的。它可以应用这样的逻辑:如果从 index.js
或您在
package.json
中公开的任何模块导出符号,则它意味着公共 API,并且不会报告为未使用,但 WebStorm 中似乎没有这样的逻辑。您可以做的是,正如 WebStorm 本身所建议的那样,通过添加来让它忽略未使用的符号
// noinspection JSUnusedGlobalSymbols
在其声明之前的行中。检查动作 (
Alt-Return
) 甚至会为您做到这一点:
您也可以通过将注释放在第一行,后跟一个空行来忽略整个源文件中的所有此类警告,但我不建议这样做,因为存在您可能会错过一些实际未使用的符号的危险。