• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

nebrelbug / npm-to-yarn / 4444331485

pending completion
4444331485

push

github

GitHub
Merge pull request #38 from armano2/test

119 of 122 branches covered (97.54%)

Branch coverage included in aggregate %.

222 of 224 relevant lines covered (99.11%)

129.88 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.47
/src/npmToPnpm.ts
1
import { parse } from './command'
1✔
2

3
function convertPnpmInstallArgs (args: string[]) {
4
  return args.map(item => {
24✔
5
    switch (item) {
61✔
6
      case '--save':
7
      case '-S':
8
        return ''
2✔
9
      case '--no-package-lock':
10
        return '--frozen-lockfile'
1✔
11
      // case '--save-dev':
12
      // case '-D':
13
      // case '--save-prod':
14
      // case '-P':
15
      // case '--save-optional':
16
      // case '-O':
17
      // case '--save-exact':
18
      // case '-E':
19
      // case '--global':
20
      // case '-g':
21
      default:
22
        return item
58✔
23
    }
24
  })
25
}
26

27
function convertFilterArg (args: string[]) {
28
  if (args.length > 1) {
6✔
29
    const filter = args.filter((item, index) => index !== 0 && !item.startsWith('-'))
6✔
30
    if (filter.length > 0) {
3✔
31
      args = args.filter((item, index) => index === 0 || item.startsWith('-'))
6✔
32
      args.push('--filter')
3✔
33
      args.push(filter.join(' '))
3✔
34
    }
35
  }
36

37
  return args
6✔
38
}
39

40
const npmToPnpmTable = {
1✔
41
  // ------------------------------
42
  install (args: string[]) {
43
    if (args.length > 1 && args.filter(item => !item.startsWith('-')).length > 1) {
48✔
44
      args[0] = 'add'
17✔
45
    }
46
    return convertPnpmInstallArgs(args)
19✔
47
  },
48
  i (args: string[]) {
49
    return npmToPnpmTable.install(args)
2✔
50
  },
51
  // ------------------------------
52
  uninstall (args: string[]) {
53
    args[0] = 'remove'
5✔
54

55
    return convertPnpmInstallArgs(args)
5✔
56
  },
57
  un (args: string[]) {
58
    return npmToPnpmTable.uninstall(args)
1✔
59
  },
60
  remove (args: string[]) {
61
    return npmToPnpmTable.uninstall(args)
1✔
62
  },
63
  r (args: string[]) {
64
    return npmToPnpmTable.uninstall(args)
1✔
65
  },
66
  rm (args: string[]) {
67
    return npmToPnpmTable.uninstall(args)
×
68
  },
69
  // ------------------------------
70
  rb (args: string[]) {
71
    return npmToPnpmTable.rebuild(args)
2✔
72
  },
73
  rebuild (args: string[]) {
74
    args[0] = 'rebuild'
4✔
75
    return convertFilterArg(args)
4✔
76
  },
77
  run: 'run',
78
  exec: 'exec',
79
  ls (args: string[]) {
80
    return npmToPnpmTable.list(args)
1✔
81
  },
82
  list (args: string[]) {
83
    return args.map(item => {
12✔
84
      if (item.startsWith('--depth=')) {
30✔
85
        return `--depth ${item.split('=')[1]}`
2✔
86
      }
87
      switch (item) {
28✔
88
        case '--production':
89
          return '--prod'
1✔
90
        case '--development':
91
          return '--dev'
1✔
92
        default:
93
          return item
26✔
94
      }
95
    })
96
  },
97
  init (args: string[]) {
98
    if (args[1] && !args[1].startsWith('-')) {
9✔
99
      args[0] = 'create'
3✔
100
    }
101
    return args.filter(item => item !== '--scope')
19✔
102
  },
103
  ln: 'link',
104
  t: 'test',
105
  test: 'test',
106
  tst: 'test',
107
  start: 'start',
108
  link: 'link',
109
  unlink (args: string[]) {
110
    return convertFilterArg(args)
2✔
111
  },
112
  outdated: 'outdated',
113
  pack: (args: string[]) => {
114
    return args.map(item => {
2✔
115
      if (item.startsWith('--pack-destination')) {
3✔
116
        return item.replace(/^--pack-destination[\s=]/, '--pack-destination ')
1✔
117
      }
118
      return item
2✔
119
    })
120
  }
121
}
122

123
export function npmToPnpm (_m: string, command: string): string {
1✔
124
  let args = parse((command || '').trim())
87!
125

126
  if (args[0] in npmToPnpmTable) {
87✔
127
    const converter = npmToPnpmTable[args[0] as keyof typeof npmToPnpmTable]
80✔
128

129
    if (typeof converter === 'function') {
80✔
130
      args = converter(args)
53✔
131
    } else {
132
      args[0] = converter
27✔
133
    }
134

135
    return 'pnpm ' + args.filter(Boolean).join(' ')
80✔
136
  } else {
137
    return 'npm ' + command + "\n# couldn't auto-convert command"
7✔
138
  }
139
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc