canvas-lms/config/build.js.erb

97 lines
2.6 KiB
Plaintext
Raw Normal View History

js bundle extensions for plugins, bugfixes and DRYification allows plugins to have a bundle get auto-loaded with a corresponding canvas bundle. uses require.js' include mechanism in build.js (when optimized) and a rails helper tweak (when not optimized). this happens automatically based on the path, e.g. the foo plugin's "bundles/extensions/bar" will get automagically included whenever the regular "bar" bundle is required. removes the need for a plugin-level build.js, and auto-generates bundle module definitions in canvas' build.js (via erb). this handles all regular bundles both from canvas and plugins. also fixes plugins so that bundle dependencies get optimized. plugin paths are created automatically, so this means we can remove things like this from plugin bundles and specs: require.config paths: myplugin: "/plugins/myplugin/javascripts" test plan: 1. use canvas in development mode, it should work 2. use canvas in optimized JS mode, it should work i. confirm that all scripts are optimized 3. use canvas in development mode with plugins w/ JS, it should work 4. use canvas in optimized JS mode with plugins w/ JS, it should work i. confirm that all scripts are optimized 5. add a bundle extension in a plugin (e.g. create bundles/extensions/conversations in plugin foo) i. confirm that the extension code runs in development mode ii. confirm that the extension code runs in optimized JS mode Change-Id: If8507afdbabab4ae8966f7db79d9b0e2284034db Reviewed-on: https://gerrit.instructure.com/11238 Tested-by: Jenkins <jenkins@instructure.com> Reviewed-by: Jacob Fugal <jacob@instructure.com>
2012-06-02 07:13:53 +08:00
({
// file optimizations
optimize: "uglify",
// continue to let Jammit do its thing
optimizeCss: "none",
// where to place optimized javascript, relative to this file
dir: "../public/optimized",
// where the "app" is, relative to this file
appDir: "../public/javascripts",
// base path for modules, relative to appDir
baseUrl: "./",
translate: true,
paths: <%= paths %>,
// non-amd shims
use: <%= shims %>,
// which modules should have their dependencies concatenated into them
modules: [
// non "app" bundles, should be careful not to try to have too many of these
{
name: "compiled/tinymce",
// this stuff is already in common, should be able to make this a smaller
// list since some things depend on others in the list, yes, its a bit crazy
// this is the intersection of common and tinymce, we need to script this
// config file...
exclude: [
'order',
'i18n',
'str/escapeRegex',
'vendor/date',
'jquery',
'str/pluralize',
'INST',
'str/htmlEscape',
'i18nObj',
'vendor/jquery.scrollTo',
'vendor/jqueryui/core',
'vendor/jqueryui/widget',
'vendor/jqueryui/mouse',
'vendor/jqueryui/position',
'translations/instructure',
'i18n!instructure',
'compiled/util/objectCollection',
'vendor/spin',
'vendor/jquery.spin',
'jquery.google-analytics',
'vendor/jquery.ba-hashchange',
'vendor/jqueryui/effects/core',
'vendor/jqueryui/effects/drop',
'jquery.rails_flash_notifications',
'translations/scribd',
'i18n!scribd',
'vendor/scribd.view',
'jquery.dropdownList',
'vendor/jqueryui/progressbar',
'translations/media_comments',
'i18n!media_comments',
'vendor/jqueryui/button',
'vendor/jqueryui/draggable',
'jqueryui/draggable',
'vendor/jqueryui/resizable',
'vendor/jqueryui/dialog',
'jquery.instructure_jquery_patches',
'vendor/jqueryui/datepicker',
'vendor/jqueryui/sortable',
'jquery.scrollToVisible',
'vendor/jqueryui/tabs',
'jquery.disableWhileLoading',
'jquery.keycodes',
'jquery.instructure_date_and_time',
'jquery.instructure_misc_plugins',
'tinymce.editor_box',
'jquery.instructure_forms',
'jquery.ajaxJSON',
'jquery.instructure_misc_helpers',
'media_comments'
]
},
{ name: "common" },
// "apps"
<%= app_bundles %>
]
})