我有一个json是需要我的地方文件node的脚本,但我不希望有它捆绑的rollup。我希望它被视为“外部”。每次json文件更改时,脚本应该能够在不通过汇总重建包的情况下获取更改。目前,它在捆绑包中是“硬编码”的:
// ./src/index.js
const json = require('../example.json');
Run Code Online (Sandbox Code Playgroud)
与./example.json:
{
"exampleValue": "X"
}
Run Code Online (Sandbox Code Playgroud)
返回一个包,其中包括:
{
"exampleValue": "X"
}
Run Code Online (Sandbox Code Playgroud)
我试图用 排除它rollup-plugin-json,但正如我所料,它抛出:
[!] 错误: Unexpected token (注意你需要 rollup-plugin-json 来导入 JSON 文件)
是否可以将 json 文件标记为外部,就像您可以通过汇总配置文件中的属性external和output.paths属性标记外部包一样?
我嘲笑了一些 nodejs 模块(例如,其中之一是fs)。我将它们放在一个__mocks__文件夹(同一级别 als node_modules)文件夹中,并且模块模拟工作。但是,无论我使用哪个“测试清除之间”选项,下一个测试都不是“沙盒化”的。这里出了什么问题?
fs模拟模块的一个非常简化的示例是:
// __mocks__/fs.js
module.exports = {
existsSync: jest.fn()
.mockReturnValueOnce(1)
.mockReturnValueOnce(2)
.mockReturnValueOnce(3)
}
Run Code Online (Sandbox Code Playgroud)
我只是期望在每次测试中,无论何时init()被调用(见下文),都会existsSync从值 1 重新开始: 的第一个值jest.fn().mockReturnValue()。在测试文件中,我具有以下结构:
// init.test.js
const init = require("../init");
const { existsSync } = require("fs");
jest.mock("fs");
describe("initializes script", () => {
afterEach(() => {
// see below!
});
test("it checks for a package.json in current directory", () => {
init();
});
test("it stops script if there's a package.json in dir", …Run Code Online (Sandbox Code Playgroud) 当我尝试通过运行npm run clean(下面的代码)使用 npm 清理文件夹时,出现以下错误:
rm: 无法删除“lib/*”: 没有那个文件或目录
在我的 package.json 中,我使用了以下脚本:
{
"scripts": {
"clean": "rm -r lib/*",
"show": "ls lib/*"
}
}
Run Code Online (Sandbox Code Playgroud)
我绝对确定该文件夹存在。我试过在lib路径周围使用单引号。我知道 glob 扩展正在起作用:npm run show效果很好。
我不想像这里建议的那样添加任何依赖项,例如 rimraf 。我也不关心 Windows 支持。我知道我可以使用rm -r lib && mkdir libwhich 有效。我最感兴趣的是为什么rm -r lib/*会出现错误。有人可以帮我吗?
npm 版本: 5.5.1
节点版本: 8.9.3
老实说,我不知道我的设置是否有问题,或者这是否是打字稿功能。在以下示例中:
type AllowedChars = 'x' | 'y' | 'z';
const exampleArr: AllowedChars[] = ['x', 'y', 'z'];
function checkKey(e: KeyboardEvent) {
if (exampleArr.includes(e.key)) { // <-- here
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
打字稿编译器抱怨Argument of type 'string' is not assignable to parameter of type 'AllowedChars'.但是我在哪里分配?Array.prototype.includes返回一个布尔值(我没有存储)。我可以通过类型断言消除错误,如下所示:
if (exampleArr.includes(e.key as AllowedChars)) {}
Run Code Online (Sandbox Code Playgroud)
但这如何正确,我期待用户输入可能是任何内容。我不明白为什么一个函数(Array.prototype.includes())以检查是否一个元素在数组中发现,有关于输入的期望类型的知识。
我的tsconfig.json(打字稿 v3.1.3):
{
"compilerOptions": {
"target": "esnext",
"moduleResolution": "node",
"allowJs": true,
"noEmit": true,
"strict": true,
"isolatedModules": true,
"esModuleInterop": true,
"jsx": "preserve",
}, …Run Code Online (Sandbox Code Playgroud) 我有StackNavigator一个带有自定义标头的组件DrawerNavigator。自定义标题有一个按钮,应在按下时切换抽屉。我已经添加了 React Navigation 文档中提供的操作,但不起作用。
可以在这里找到有问题的小吃
我究竟做错了什么?谢谢你。
node.js ×3
javascript ×2
jestjs ×1
npm ×1
react-native ×1
rollupjs ×1
shell ×1
typescript ×1
unit-testing ×1