我在javascript文件中应用了缩小功能。我想用
包装那个缩小的文件 (function(){
此处的文件内容 })()
。
或
我可以通过任何其他方式实现这一目标。
基本上我希望我的文件被匿名包装。
我正在使用以下maven插件。
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<configuration>
<preProcessAggregates>true</preProcessAggregates>
<encoding>UTF-8</encoding>
<disableOptimizations>false</disableOptimizations>
<failOnWarning>false</failOnWarning>
<force>true</force>
<gzip>false</gzip>
<nomunge>true</nomunge>
<jswarn>false</jswarn>
<nosuffix>true</nosuffix>
<useProcessedResources>true</useProcessedResources>
<aggregations>
<aggregation>
<insertNewLine>false</insertNewLine>
<output>${basedir}/target/web/js/minified.js</output>
<inputDir>${basedir}/src/main/webapp/js/app</inputDir>
<includes>
<include>*.js</include>
</includes>
</aggregation>
</aggregations>
<excludes>
<exclude>**/lib/**</exclude>
<exclude>**/*-min.js</exclude>
<exclude>**/*.min.js</exclude>
<exclude>**/*-min.css</exclude>
<exclude>**/*.min.css</exclude>
</excludes>
<sourceDirectory>${basedir}/target</sourceDirectory>
<outputDirectory>${basedir}/target</outputDirectory>
</configuration>
</plugin>
修改 我可以通过将每个文件放在匿名函数和构建时,合并和缩小来实现这一点。但是我没有把它放在每个文件中,而是想把它放在合并文件上。
我想包装匿名函数,以便无法通过控制台访问代码。
答案 0 :(得分:1)
您应该使用资产管道工具来深入控制您的配置。
您可以考虑使用WUIC并根据需要进行扩展。
您可以使用maven-plugin
,启用YUICompressor
支持,然后编写一个自定义ObjectBuilderInspector
,它将为聚合器指定包装您内容的自定义Transformer
。< / p>
请在下面找到一些代码,您会找到文档here以及示例here和here。
<build>
<plugins>
<plugin>
<groupId>com.github.wuic.plugins</groupId>
<artifactId>static-helper-maven-plugin</artifactId>
<version>${project.version}</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>process</goal>
</goals>
</execution>
</executions>
<configuration>
<xml>src/main/resources/wuic.xml</xml>
<properties>src/main/resources/wuic.properties</properties>
<output>${project.build.finalName}</output>
</configuration>
<dependencies>
<dependency>
<groupId>com.github.wuic.extensions</groupId>
<artifactId>wuic-yuicompressor</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<wuic>
<heaps>
<heap id="scripts">
<nut-path>*/lib/*</nut-path>
<nut-path>*/*-min.js</nut-path>
<nut-path>*/*.min.js</nut-path>
<nut-path>*/*-min.css</nut-path>
<nut-path>*/*.min.css</nut-path>
</heap>
</heaps>
</wuic>
# for resources in classpath (src/main/resources)
c.g.wuic.dao.wildcard=true
c.g.wuic.dao.basePath=/js/app
c.g.wuic.facade.additionalBuilderInspectorClasses=com.your.app.MyInspector
public class MyInspector implements ObjectBuilderInspector, Pipe.Transformer<ConvertibleNut> {
@Override
public <T> T inspect(T object) {
if (object instanceof TextAggregatorEngine) {
TextAggregatorEngine.class.cast(object).addTransformer(this);
}
return object;
}
@Override
public void transform(InputStream is, OutputStream os, ConvertibleNut convertible) throws IOException {
if (convertible.getNutType().equals(NutType.JAVASCRIPT)) {
os.write("(function(){".getBytes());
IOUtils.copyStream(is, os);
os.write("})();".getBytes());
} else {
IOUtils.copyStream(is, os);
}
}
@Override
public boolean canAggregateTransformedStream() {
return false;
}
}