parse.js 897 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. var babylon = require('babylon')
  2. const acorn = require('acorn')
  3. const escodegen = require('escodegen')
  4. // const plugin = require('babel-plugin-import')
  5. // console.log(babylon)
  6. const code = `import{ Group as Groups,
  7. Cell } from 'vux'; import { X } from 'x'
  8. import a from './a'
  9. import x from 'vux/src/components/cell'
  10. var b = '1'`
  11. const rs = babylon.parse(code, {
  12. sourceType: 'module'
  13. })
  14. // console.log(rs)
  15. const format = function (obj) {
  16. return JSON.stringify(obj, null, 2)
  17. }
  18. const tree = acorn.parse(code, {
  19. sourceType: 'module'
  20. })
  21. console.log(format(tree.body))
  22. const append = acorn.parse(`import{ a, xb,
  23. c,de} from 'xxx'`, {
  24. sourceType: 'module'
  25. })
  26. // 重新生成
  27. tree.body.unshift(append)
  28. const code2 = escodegen.generate(tree, {
  29. format: {
  30. semicolons: false,
  31. indent: {
  32. style: ' ',
  33. base: 0,
  34. adjustMultilineComment: false
  35. }
  36. }
  37. })
  38. console.log(code2)