我正在尝试构建软件包并将其发布到npm
,并且我正在使用babel。但是在建造时,它向我显示了此警告:
第1行:“严格”模块内部不需要“严格使用”
第23行:“ ||”的意外混合和“ &&”无混合运算符
这是我的方法:
function required(value) {
if (
value === null ||
value === undefined ||
("string" === typeof value && value.trim().length === 0) ||
value.length === 0
)
return false;
return true;
}
以下是其转换方式:
function required(value) {
if (value === null || value === undefined || "string" === typeof value && value.trim().length === 0 || value.length === 0) return false;
return true;
}
我不会删除()
内的"string" === typeof value && value.trim().length === 0
,而是在每个if
else
块内这样做
这是我的babel.config.js
:
module.exports = function(api){
api.cache(true);
const presets = [ "@babel/preset-env", "@babel/preset-react" ];
const plugins = [ ];
return {
presets,
plugins
};
}
这是我的package.json
:
{
"scripts": {
"prepublishOnly": "babel ./src --out-dir ./dist -s inline"
},
"devDependencies": {
"@babel/cli": "^7.4.4",
"@babel/core": "^7.4.5",
"@babel/preset-env": "^7.4.5",
"@babel/preset-react": "^7.0.0",
"moment": "^2.24.0",
"react-dom": "^16.8.6"
},
"dependencies": {},
"peerDependencies": {
"react": "^16.8.6"
},
"files": [
"dist/*"
]
}
答案 0 :(得分:1)
Babel就在这里:由于operator precedence不需要括号,&&
的优先级高于||
。
林特尔(Linter)可以正确地表示此代码不可读。
但是Babel的输出并不适合您的人眼或短毛猫,而是针对浏览器。
别把巴别塔的产值掉下来。该错误在您的构建链中。
旁注:您可以替换
if (a) return false;
return true;
使用
return !a;