好的,所以我有一个巨大的文件,它导致了很多文件的串联。
这并不重要,但它是由3个谷歌闭包依赖文件和许多单元测试文件组成的汇编。
我的问题是,每个单元测试文件都需要一些闭包模块,因为它们现在都在同一个文件中,所以当我用phantomjs运行它时,需要多次相同的依赖项
我需要的是一个脚本,它遍历文件,并删除重复的以goog.require
(.)开头的行(在第一行之后)
因此,规则是:
- 以
goog.require(
开头 - 完全相同的行(忽略尾部和前面的空格)存在于
示例:
goog.provide( "app.tests.mvc.PMVCUnitTestBootstrap" );
goog.require( "app.tests.mvc.jsunit" );
goog.require( "app.Bootstrap" );
goog.require( "pmvc.patterns.observer.Observer" );
goog.require( "app.tests.mvc.ApplicationResources" );
goog.require( "app.notifications.SystemNotes" );
goog.require( "lib.puremvc.definitions.notifications.NotificationMapper" );
goog.require( "lib.puremvc.definitions.notifications.NotificationMap" );
...
...
...
goog.require( "app.tests.mvc.jsunit" ); //this line is repeated
goog.require( "app.Bootstrap" ); //this line is repeated
goog.require( "lib.unittests.helpers.ExpectedFailures" );
goog.require( "lib.filesystem.ConstructableFile" );
goog.require( "lib.filesystem.FileReference" );
goog.require( "lib.utils.ArrayUtil" );
goog.require( "easy.util.GUIDUtil" );
...
...
将成为
goog.provide( "app.tests.mvc.PMVCUnitTestBootstrap" );
goog.require( "app.tests.mvc.jsunit" );
goog.require( "app.Bootstrap" );
goog.require( "pmvc.patterns.observer.Observer" );
goog.require( "app.tests.mvc.ApplicationResources" );
goog.require( "app.notifications.SystemNotes" );
goog.require( "lib.puremvc.definitions.notifications.NotificationMapper" );
goog.require( "lib.puremvc.definitions.notifications.NotificationMap" );
...
...
...
goog.require( "lib.unittests.helpers.ExpectedFailures" );
goog.require( "lib.filesystem.ConstructableFile" );
goog.require( "lib.filesystem.FileReference" );
goog.require( "lib.utils.ArrayUtil" );
goog.require( "easy.util.GUIDUtil" );
...
...
欢迎提供任何帮助
获取所有以goog.require 开头的唯一字符串
grep '^goog.require' yourfile.txt | sort -u > uniq_require.txt
然后从源中删除所有谷歌需求
sed -i '/^goog.require/d' yourfile.txt
然后连接结果
cat uniq_require.txt yourfile.txt > result.txt
没有测试,只是擦伤。