Skip to content

Commit 2c62aff

Browse files
authored
feat: 一键修改包名 (jdf2e#2378)
* feat: 包名一键迁移 * fix: 修改包名 * chore: 移除备选写法 * fix: 修改匹配条件 * fix: 修改匹配条件 * fix: 单个替换移除判断 * fix: 区分内外部 * fix: 修改查找的节点 * fix: 更新包名+ReadMe
1 parent f57b0b3 commit 2c62aff

File tree

5 files changed

+51
-1
lines changed

5 files changed

+51
-1
lines changed

packages/nutui-codemod/README.md

+25-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
一组帮助你升级到 NutUI React 2.x 的 codemod 脚本集合,基于 [jscodeshift](https://github.com/facebook/jscodeshift) 构建。
44

55
## 安装和使用
6-
在运行 codemod 脚本钱,请先提交你本地代码的修改。
6+
在运行 codemod 脚本前,请先提交你本地代码的修改。
77

88
### 针对 @nutui/nutui-react 的升级可采用下面的脚本
99
```shell
@@ -82,3 +82,27 @@ const App = () => {
8282
export default App
8383

8484
```
85+
86+
`package-name-migration`
87+
- 包名替换
88+
89+
```shell
90+
# 使用 npx 直接运行
91+
npx -p @nutui/nutui-react-codemod nutui-react-codemod src -taro -internal
92+
93+
# 或者使用 pnpm 直接运行
94+
pnpm --package=@nutui/nutui-react-codemod dlx nutui-react-codemod src -taro -internal
95+
```
96+
97+
```diff
98+
- import { Button, Collapse } from "@nutui/nutui-react-taro";
99+
- import { Cell } from '@nutui/nutui-react-taro/dist/components/cell/index';
100+
- import '@nutui/nutui-react-taro/dist/components/cell/index';
101+
- import "@nutui/nutui-react-taro/dist/style.css";
102+
- import NutUI from "@nutui/nutui-react-taro";
103+
+ import { Button, Collapse } from "@dongdesign/components";
104+
+ import { Cell } from "@dongdesign/components/dist/components/cell/index";
105+
+ import "@dongdesign/components/dist/components/cell/index";
106+
+ import "@dongdesign/components/dist/style.css";
107+
+ import NutUI from "@dongdesign/components";
108+
```

packages/nutui-codemod/bin/cli.js

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ const transformers = [
1111
'icon-migration',
1212
'props-changed-migration',
1313
]
14+
process.argv.indexOf('-internal') > -1 &&
15+
transformers.push('package-name-migration')
1416
const transformersDir = path.join(__dirname, '../transforms')
1517
const ignoreConfig = path.join(__dirname, './codemod.ignore')
1618

packages/nutui-codemod/bin/config/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
const pkgVersion = process.argv.indexOf('-taro') > -1 ? 'taro' : 'h5'
22
const pkgInfo = {
33
h5: {
4+
dongDesign: '@dongdesign/ui',
45
icon: '@nutui/icons-react',
56
ui: '@nutui/nutui-react',
67
},
78
taro: {
9+
dongDesign: '@dongdesign/ui',
810
icon: '@nutui/icons-react-taro',
911
ui: '@nutui/nutui-react-taro',
1012
},
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
const findImportDeclaration = require('./utils/find-importDeclaration')
2+
3+
module.exports = (file, api, options) => {
4+
const j = api.jscodeshift
5+
const root = j(file.source)
6+
const literals = findImportDeclaration(j, root, options.pkgInfo)
7+
literals.forEach((path) => {
8+
path.node.source.value = path.node.source.value.replace(
9+
options.pkgInfo.ui,
10+
options.pkgInfo.dongDesign
11+
)
12+
})
13+
14+
return root.toSource()
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
function findImportDeclaration(j, pathCollection, pkgInfo) {
2+
return pathCollection.find(j.ImportDeclaration).filter((path) => {
3+
return path.node.source && path.node.source.value.indexOf(pkgInfo.ui) !== -1
4+
})
5+
}
6+
7+
module.exports = findImportDeclaration

0 commit comments

Comments
 (0)