根据问题标题,我有一个仅应在测试中使用的模块,如何防止其在生产中使用?
答案 0 :(得分:3)
好像您正在尝试在NodeJS
中模拟一些测试用例的模块。
代替有条件地导入,一种更好的方法是有条件地导出真实或模拟对象。
import mockModule from './mockModule';
import realModule from './realModule';
const exported = (CONDITION) ? mockModule : realModule;
export default exported;
此外,您可能希望为您的用例导出一些空对象,而不是mockModule
。像这样:
const exported = (CONDITION)? {} : realModule;
CONDITION
,以根据某些环境变量或您的测试套件来检查测试是否正在运行。例如,您可以使用摩卡咖啡:
var isInTest = typeof global.it === 'function';
来源:How to detect if a mocha test is running in node.js?
此外,您可以使用require
有条件地导入模块:
if (CONDITION) {
const foo = require('foo');
}
答案 1 :(得分:0)
这完全取决于您的构建过程和环境变量。我知道,例如,如果您使用Wepback进行构建,则在webpack.config文件中,您将具有以下代码,可以在其中添加排除项:
module: {
rules: [
{ test: /\.ts$/, loader: "ts-loader", exclude: /*myModuleToExclude*/, },
]
}
只需为您的特定构建过程寻找特定的实现。
答案 2 :(得分:-1)
在package.json的“ devDependencies”部分添加模块,而不是添加“ dependencies”