如何创建一个适用于谷歌应用程序脚本和浏览器的单一代码库?

时间:2017-02-03 10:24:23

标签: javascript google-apps-script browserify

这是一个我无法理解如何让它以最佳方式运行的问题,即当对代码库进行更新时,谷歌应用程序脚本文档附加组件和浏览器版本都会更新。 假设我有一个我要发布的谷歌应用脚​​本项目,可以作为附加组件和浏览器使用。然而,与浏览器版本相比,该项目具有与GAS版本不同的实现。 不幸的是,Browserify不再是一个选项,因为它似乎已经破坏了与GAS中Browserify的向后兼容性。关于如何解决这个问题的任何建议?

1 个答案:

答案 0 :(得分:0)

一种方法是向我们提供像Gulp Expose这样的工具。

  

https://www.npmjs.com/package/gulp-expose

对于您的浏览器构建,您将向window公开。对于您的应用脚本构建,您将向this公开。以下是使用Apps脚本代码构建模块的Gulp任务示例。这来自https://github.com/googlesamples/apps-script-oauth2

上的官方Apps Script Oauth2库
var gulp = require('gulp');
var concat = require('gulp-concat');
var expose = require('gulp-expose');
var stripLine  = require('gulp-strip-line');
var gulpif = require('gulp-if');
var del = require('del');
var rename = require("gulp-rename");
var jshint = require('gulp-jshint');
var stylish = require('jshint-stylish');

gulp.task('dist', ['clean'], function() {
  gulp.src('src/*.gs')
      .pipe(gulpif(/OAuth2\.gs$/,
          stripLine('var _ =')))
      .pipe(concat('OAuth2.gs'))
      .pipe(expose('this', 'OAuth2'))
      .pipe(gulp.dest('dist'));
  gulp.src('node_modules/underscore/underscore.js')
      .pipe(rename('Underscore.gs'))
      .pipe(gulp.dest('dist'));
});

gulp.task('clean', function() {
  del([
    'dist/*'
  ]);
});

gulp.task('lint', function() {
  return gulp.src('src/*.gs')
    .pipe(jshint())
    .pipe(jshint.reporter(stylish));
});