Security News
JavaScript Leaders Demand Oracle Release the JavaScript Trademark
In an open letter, JavaScript community leaders urge Oracle to give up the JavaScript trademark, arguing that it has been effectively abandoned through nonuse.
gas-webpack-plugin
Advanced tools
Webpack plugin for Google Apps Script.
In Google Apps Script, an entry point called from google.script.run must be a top level function declaration on the server side.
gas-webpack-plugin
detects function assignment expressions to global
object and generate a corresponding top level function declaration statement.
main.js:
var echo = require('./echo');
/**
* Return write arguments.
*/
global.echo = echo;
echo.js:
module.exports = function(message) {
return message;
}
webpack.config.js:
const GasPlugin = require("gas-webpack-plugin");
module.exports = {
context: __dirname,
entry: "./main.js",
output: {
path: __dirname ,
filename: 'Code.gs'
},
plugins: [
new GasPlugin()
]
}
build:
$ webpack --mode production
Code.gs
/**
* Return write arguments.
*/
function echo() {
}/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 2);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
var g;
// This works in non-strict mode
g = (function() {
return this;
})();
try {
// This works if eval is allowed (see CSP)
g = g || Function("return this")() || (1,eval)("this");
} catch(e) {
// This works if the window reference is available
if(typeof window === "object")
g = window;
}
// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}
module.exports = g;
/***/ }),
/* 1 */
/***/ (function(module, exports) {
module.exports = function(message) {
return message;
};
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {var echo = __webpack_require__(1);
global.echo = echo;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
/***/ })
/******/ ]);
$ npm install gas-webpack-plugin --save-dev
$ webpack --mode production
You can pass a hash of configuration options to gas-webpack-plugin. Allowed values are as follows
Name | Type | Default | Description |
---|---|---|---|
comment | {Boolean} | true | If true then generate a top level function declaration statement with comment. |
autoGlobalExportsFiles | {Array<String>} | [] | Array of source file paths that to generate global assignments expression from exports.* statements. |
include | {Array<String>} | [**/*] | Array of path patterns to detect functions to generate top level function definitions. accept glob pattern. |
Assignments expression to global object is automatically generated from named exports (exports.*
) Included in the file specified by the autoGlobalExportsFiles option.
main.ts:
import './echo';
echo.ts:
// geranate global assignment expressions from named export
export const echo = (message) => message;
webpack.config.js:
const GasPlugin = require("gas-webpack-plugin");
module.exports = {
context: __dirname,
entry: "./main.ts",
module: {
rules: [
{
test: /(\.ts)$/,
loader: 'ts-loader',
},
],
},
resolve: {
extensions: [".ts"],
},
output: {
path: __dirname ,
filename: 'Code.js'
},
plugins: [
new GasPlugin({
autoGlobalExportsFiles: ['**/*.ts']
})
]
}
gas-webpack-plugin is support for Webpack@5.x
FAQs
Webpack Plugin for Google Apps Script
The npm package gas-webpack-plugin receives a total of 2,639 weekly downloads. As such, gas-webpack-plugin popularity was classified as popular.
We found that gas-webpack-plugin demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
In an open letter, JavaScript community leaders urge Oracle to give up the JavaScript trademark, arguing that it has been effectively abandoned through nonuse.
Security News
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
Security News
Floating dependency ranges in npm can introduce instability and security risks into your project by allowing unverified or incompatible versions to be installed automatically, leading to unpredictable behavior and potential conflicts.