重构RequireJS模块(AMD)到Webpack模块(CommonJS)

时间:2017-09-28 04:02:00

标签: javascript webpack gruntjs requirejs refactoring

我需要重构一堆像这样调用的文件

define(['module1','module2','module3' etc...], function(a, b, c etc...) {

   //bunch of code

   return Something;

});

var a = require('module1');
var b = require('module2');
var c = require('module3');

//bunch of code

module.exports = Something;

看起来像一个非常简单的任务,99%的代码遵循这种模式,但我不能使用正则表达式,因为我无法平衡括号。

我已经找到了文件遍历,在一项艰巨的任务中,我只需要转换文件并将其写回来。

grunt.registerTask('refactor', '', function() {
    //traverse all files   
    grunt.file.recurse('./src/js/views', function callback(abspath, rootdir, subdir, filename) {
        var c;
        //only care about .js files
        if(filename.match(/\.js$/)){
            console.log(subdir, filename);
            c = grunt.file.read(abspath); //read file

            //modify it
            c = c + "\n/* Comment appended! */";  

            grunt.file.write(abspath, c); //write it back
        }

    });

    grunt.log.write("DONE").ok();
});

这是一次性的工作,所以我正在寻找一个快速解决问题的解决方案,无论如何我将不得不手动检查所有文件,我只想节省一些时间。

1 个答案:

答案 0 :(得分:1)

正则表达式不适合这项工作。

你应该使用某种js解析器,其中有很多。 有一些与修改代码相关的短语code-mod& code-shift

看看that tool