首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Compiler+Library:如何设置库文件夹,但不要编译它?

Compiler+Library:如何设置库文件夹,但不要编译它?
EN

Stack Overflow用户
提问于 2016-12-15 12:47:24
回答 1查看 69关注 0票数 0

我有一个应用程序,它使用Open层库。Open层使用闭包库。

我希望将所有内容(应用程序、Openlayers和闭包库)编译成一个whole_application.js文件。

问题是闭包编译器在所有源上运行,将未使用的函数放入我的whole_application.js文件中,比如goog.ui。

我的应用程序是用ES5编写的,围绕着一个简单的goog.需要量/goog.Providing。(我还想将它移植到ES6)

我想设置类似于root.js --依赖关系树的根--一个包含所有goog.request‘s的文件,在这里我可以编写

代码语言:javascript
复制
goog.provide('myApplication');

goog.require('ol.source.Vector'); // openlayers module
goog.require('myApplication.someModule');

并且要快乐。有什么办法吗?

或者,我可以用我的源代码设置文件夹来编译其中的所有内容,并设置一个具有依赖项(例如open层/闭包库)的文件夹,以便在其中搜索所需的依赖项。

或者,也许还有其他的解决方案?

编译/部署由gulp /google-闭包编译器执行。下面是剧本:

代码语言:javascript
复制
dirs.deploy = 'folder/with/my/sources'

var closureLibraryPath = './node_modules/google-closure-library/'

var closureLibraryExcludes = [
  "!**/*_test.js",
  "!**/*_perf.js",
  "!**/*tester.js",
  "!**/*promise/testsuiteadapter.js",
  "!**/*osapi/osapi.js",
  "!**/*svgpan/svgpan.js",
  "!**/*alltests.js",
  "!**/*node_modules**.js",
  "!**/*protractor_spec.js",
  "!**/*protractor.conf.js",
  "!**/*browser_capabilities.js",
  "!./doc/**.js"
];

gulp.task('deps-deploy', ['copy'], function (cb) {
  var exec = require('child_process').exec;
  exec(`
    cd ` + dirs.deploy + `/js &&
    chmod 644 deps.js &&
    "./` + closureLibraryPath + 'closure/bin/build/depswriter.py" ui.js --root_with_prefix="assets assets" > deps.js');
});


gulp.task('process-broadcast-assets', ['deps-deploy', 'copy', 'clean'], function() {
      var compilerOptions = {
    "compilation_level": "SIMPLE",
    "language_in": "ECMASCRIPT6",
    "language_out": "ECMASCRIPT5",
    "source_map_format": "V3",
    "warning_level": "QUIET",
    "formatting": "PRETTY_PRINT",
    "js_output_file": "whole_application.js",
    "output_wrapper": "%output%"
  };
  var paths = [].concat(dirs.deploy + '/js/assets/**/*.js', closureLibraryPath + 'closure/goog/**/*.js', closureLibraryPath + 'third_party/**/*.js' );
      paths = paths.concat(closureLibraryExcludes);
      return gulp.src(paths)
      .pipe(chmod(644))
      .pipe(closureCompiler(compilerOptions))
      .on('warning', onWarning)
      .on('error', onError)
      .pipe(gulp.dest(dirs.deploy + '/js'));
});

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-17 14:15:47

问题是闭包编译器在所有源上运行,将未使用的函数放入我的whole_application.js文件中,比如goog.ui。

您需要使用依赖性管理标志。根据您的示例,您可能需要STRICT模式和goog:myApplication的入口点。编译器将删除应用程序不需要的任何文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41164562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档