首页 > 解决方案 > jscodeshift 总是跳过我的 js 文件

问题描述

我正在尝试将我的反应应用程序升级到最新版本的 Material-UI。Material UI 项目包括一个使用 jscodeshift 的迁移帮助脚本。(https://github.com/mui-org/material-ui/tree/master/packages/material-ui-codemod

但是,我的所有文件都被 jscodeshift 跳过了,我不知道为什么。我尝试了各种参数和标志,无论所有文件都被跳过。

例如,这是我使用的命令:

jscodeshift -t import-path.js Foo.js -v 2
Processing 1 files...
Spawning 1 workers...
Sending 1 files to free worker...
 SKIP Foo.js
All done.
Results:
0 errors
0 unmodified
1 skipped
0 ok
Time elapsed: 0.696seconds

Foo.js 的内容是一个非常基础的 react 组件。我试图消除尽可能多的变量。我创建了最基本的组件。

import React from 'react';

import Button from 'material-ui/Button'

const Foo = (props) =>
    <Button>Hello</Button>;

export default Foo;

但是,该文件总是被跳过。我什至尝试了详细日志记录,但仍然没有任何理由跳过该文件。任何帮助将不胜感激。

标签: javascriptreactjs

解决方案


这里有两个问题。

第一的

您必须执行一个手动步骤才能使 codemod 工作,如 import-path 的自述文件中所述:

注意:如果您从 pre-v1.0 迁移,并且您的导入使用 material-ui,您将需要手动查找并将代码中对 material-ui 的所有引用替换为 @material-ui/core。例如:

-import Typography from 'material-ui/Typography';
+import Typography from '@material-ui/core/Typography';

第二

material-ui 的 codemod 似乎不包括Button. 我尝试了您的示例,StepButton并且效果很好。

import React from 'react';

import StepButton from '@material-ui/StepButton';

const Foo = (props) =>
    <StepButton>Hello</StepButton>;

export default Foo;

请注意,可以在此处找到该列表。


推荐阅读