@foxitsoftware/gulp-merge-addon
v0.7.7
Published
A gulp plugin for merge multiple UIExtension addons into single JS file
Downloads
888
Maintainers
Keywords
Readme
gulp-merge-addon plugin
You can use this plugin to merge UIExtension addons in a project without webpack and then import them like modules.
Import Example
import TextObjectAddon from '@addons/text-object/addon.info.json';
Getting started
To begin, you'll need to install gulp and this plugin:
npm i -D gulp @foxitsoftware/gulp-merge-addon
Configuration
gulfile.js
Add gulpfile.js
in the root directory of your project if it has not been created:
const gulp = require('gulp');
const mergeAddon = require('@foxitsoftware/gulp-merge-addon');
const libPath = 'path/to/the/sdk/lib';
gulp.task('merge-addon', () => {
return gulp.src([libPath + 'uix-addons/*/addon.info.json'])
.pipe(mergeAddon({
library: 'UIExtensionAddons',
filename: 'merged-addons.js'
}))
.pipe(gulp.dest('./dist/'));
});
package.json
Add the following command in your package.json
{
"scripts": {
"merge-addon": "gulp merge-addon"
}
}
Merge Addons
Now, you can merge UIExtension's addons by this command in the root directory of your project:
npm run merge-addon
Once done, the file /dist/merged-addons.js
will be created.
Import merged addons
Now you can import addons like using normal modules:
import addons from './dist/merged-addons';
var pdfui = new UIExtension.PDFUI({
addons: addons
// ignored other irrelevant options
});
Options
options.library
Type:string
default:UIExtensionAddons
All addons will be merged into a singleUMD
format bundle, and the value exports from the entry point(addons.js) will be assigned into the global scope via the name provided from this option. For more details, refer to webpack documentation https://webpack.js.org/configuration/output/#outputlibraryoptions.filename
Type:string
default:merged-addons.js
The file name of the bundle generated from this plugin;progress
Type:boolean
default: true Report the progress information in your terminal.watch
Type:boolean
default:false
Turn on/off the watch mode. This mean that after the first time merge, this plugin will continue to watch for the changes in any of the resolved addon files.watchOptions
Type:object
default:null
Please refer to the webpack's documentation https://webpack.js.org/configuration/watch/#watchoptionslazyInit
Type:boolean
default:false
Setting this option value totrue
will generate a bundle that supports lazy initialization. This bundle exports a function instead of an array of addon classes, so that all addon classes can be initialized inside the PDFUI regardless of the loading order.