解析xml和JS文件并输出导入的javaScript库的命令

时间:2021-03-06 01:20:03

标签: awk grep

这是我有的 cmd 有点工作。我还想将文件路径添加到输出中。

find . \( -name '*.xml' -o -name '*.js' \) \( -type f -not -path "static" -type f -not -path "node_modules" \) -exec awk '/[require|define]\(\[/,/] | require\((.*)\)/'  {} \;

以前,我为两种不同样式的导入运行了两个单独的命令。现在我把它放在一个命令中并用 | 分隔正则表达式我得到以下还包括函数(mvc, Config) {...

require([
    'mvc',
    'config',
    'mvc/xml/ready!'
], function(mvc, Config) {

    var unsubmittedTokens = mvc.Components.getInstance('default');
    var submittedTokens = mvc.Components.getInstance('submitted');

    var username = Config['USERNAME'];
    unsubmittedTokens.set('currentUser', username);
    submittedTokens.set('currentUser', username);

});

所需的输出如下。请注意有两种不同风格的 require 语句。如果在文件中找到一种风格的 require 语句,我想跳过并转到下一个我认为是 | 的文件。正则表达式的一部分应该做。

/path-to-file
# require('copy-webpack-plugin')
/path-to-file
# require([
#    'jquery',
#    'underscore',
#    'backbone',
#    'bootstrap.affix',
#    'bootstrap.scrollspy'
# ],

1 个答案:

答案 0 :(得分:0)

我把 awk 部分改成了这样:

 awk 'BEGIN {FS = ","} FNR == 1 {print FILENAME} /[require|define]\(\[/,/]/ {print "# " $1} /require\((.*)\)/ {print "# " $1}'  {} \;

得到这个输出:

/file1.js
# require([
#     'mvc'
#     'config'
#     'mvc/xml/ready!'
# ]
/file2.js
# require('mvc',
相关问题