piratepoet/webpack.config.js

292 lines
8.0 KiB
JavaScript
Raw Normal View History

var webpack = require('webpack'),
_ = require('underscore'),
path = require('path'),
baseConfig = {},
config = [];
baseConfig = {
context: __dirname,
watch: {
aggregateTimeout: 300,
poll: true
},
output: {
path: './assets/js',
filename: '[name].js',
},
resolve: {
modulesDirectories: [
'node_modules',
'assets/js/src',
],
alias: {
'handlebars': 'handlebars/dist/handlebars.js',
'backbone.marionette': 'backbone.marionette/lib/backbone.marionette',
'backbone.supermodel$': 'backbone.supermodel/build/backbone.supermodel.js',
2016-01-04 17:02:46 +02:00
'sticky-kit': 'vendor/jquery.sticky-kit.js',
2015-08-26 18:24:43 +03:00
'interact$': 'interact.js/interact.js',
'spectrum$': 'spectrum-colorpicker/spectrum.js',
'blob$': 'blob/Blob.js',
'filesaver$': 'filesaver/FileSaver.js',
2015-11-13 14:45:25 +02:00
'papaparse': 'papaparse/papaparse.min.js',
'helpscout': 'helpscout.js',
'html2canvas': 'html2canvas/dist/html2canvas.js',
'asyncqueue': 'vendor/jquery.asyncqueue.js'
2015-08-26 18:24:43 +03:00
},
},
node: {
fs: 'empty'
},
module: {
loaders: [
{
test: /\.jsx$/,
loader: 'babel-loader'
},
{
test: /form_editor\.js$/,
loader: 'expose-loader?WysijaForm',
},
{
include: require.resolve('codemirror'),
loader: 'expose-loader?CodeMirror',
},
{
include: require.resolve('backbone'),
loader: 'expose-loader?Backbone',
},
{
include: require.resolve('underscore'),
loader: 'expose-loader?_',
},
{
include: /Blob.js$/,
loader: 'exports-loader?window.Blob',
},
{
test: /backbone.supermodel/,
loader: 'exports-loader?Backbone.SuperModel',
},
2015-08-26 18:24:43 +03:00
{
include: require.resolve('handlebars'),
loader: 'expose-loader?Handlebars',
},
2015-11-13 14:45:25 +02:00
{
include: /helpscout.js$/,
loader: 'exports-loader?window.HS',
},
{
include: /html2canvas.js$/,
loader: 'expose-loader?html2canvas',
},
{
include: require.resolve('velocity-animate'),
loader: 'imports-loader?jQuery=jquery',
},
]
}
};
// Admin
config.push(_.extend({}, baseConfig, {
name: 'admin',
entry: {
vendor: [
'handlebars',
'handlebars_helpers'
],
mailpoet: [
'mailpoet',
'ajax',
'date',
'i18n',
'modal',
'notice',
'jquery.serialize_object',
'parsleyjs'
],
admin: [
'subscribers/subscribers.jsx',
'newsletters/newsletters.jsx',
'segments/segments.jsx',
2015-10-28 13:18:56 +01:00
'forms/forms.jsx',
'settings/tabs.js',
'subscribers/importExport/import.js',
'subscribers/importExport/export.js',
'helpscout',
'cron.jsx'
],
form_editor: [
'form_editor/form_editor.js',
'codemirror',
'codemirror/mode/css/css'
],
newsletter_editor: [
'underscore',
'backbone',
'backbone.marionette',
'backbone.supermodel',
'interact.js',
'backbone.radio',
'select2',
2015-08-26 18:24:43 +03:00
'spectrum',
'sticky-kit',
'blob',
'filesaver',
'velocity-animate',
'newsletter_editor/communicationsFix.js',
'newsletter_editor/App',
'newsletter_editor/components/config.js',
'newsletter_editor/components/styles.js',
'newsletter_editor/components/sidebar.js',
'newsletter_editor/components/content.js',
'newsletter_editor/components/heading.js',
'newsletter_editor/components/save.js',
'newsletter_editor/components/communication.js',
'newsletter_editor/behaviors/BehaviorsLookup.js',
'newsletter_editor/behaviors/ColorPickerBehavior.js',
'newsletter_editor/behaviors/ContainerDropZoneBehavior.js',
'newsletter_editor/behaviors/DraggableBehavior.js',
'newsletter_editor/behaviors/HighlightEditingBehavior.js',
'newsletter_editor/behaviors/ResizableBehavior.js',
'newsletter_editor/behaviors/SortableBehavior.js',
'newsletter_editor/behaviors/ShowSettingsBehavior.js',
'newsletter_editor/blocks/base.js',
'newsletter_editor/blocks/container.js',
'newsletter_editor/blocks/button.js',
'newsletter_editor/blocks/image.js',
'newsletter_editor/blocks/divider.js',
'newsletter_editor/blocks/text.js',
'newsletter_editor/blocks/spacer.js',
'newsletter_editor/blocks/footer.js',
'newsletter_editor/blocks/header.js',
'newsletter_editor/blocks/automatedLatestContent.js',
'newsletter_editor/blocks/posts.js',
'newsletter_editor/blocks/social.js'
]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js')
],
externals: {
'jquery': 'jQuery',
'tinymce': 'tinymce'
}
}));
// Public
config.push(_.extend({}, baseConfig, {
name: 'public',
entry: {
public: [
'mailpoet',
'ajax',
2016-03-22 17:23:33 +01:00
'iframe',
'jquery.serialize_object',
'public.js'
]
},
externals: {
'jquery': 'jQuery'
}
}));
// Test
config.push(_.extend({}, baseConfig, {
name: 'test',
entry: {
2015-08-26 18:24:43 +03:00
vendor: ['handlebars', 'handlebars_helpers'],
testNewsletterEditor: [
'underscore',
'backbone',
'backbone.marionette',
'backbone.supermodel',
'backbone.radio',
'select2',
'blob',
'filesaver',
'velocity-animate',
'mailpoet',
'notice',
'i18n',
2015-08-26 18:24:43 +03:00
'newsletter_editor/communicationsFix.js',
'newsletter_editor/App',
'newsletter_editor/components/config.js',
'newsletter_editor/components/styles.js',
'newsletter_editor/components/sidebar.js',
'newsletter_editor/components/content.js',
'newsletter_editor/components/heading.js',
'newsletter_editor/components/save.js',
'newsletter_editor/components/communication.js',
2015-08-26 18:24:43 +03:00
'newsletter_editor/behaviors/BehaviorsLookup.js',
'newsletter_editor/behaviors/ColorPickerBehavior.js',
'newsletter_editor/behaviors/ContainerDropZoneBehavior.js',
'newsletter_editor/behaviors/DraggableBehavior.js',
'newsletter_editor/behaviors/HighlightEditingBehavior.js',
2015-08-26 18:24:43 +03:00
'newsletter_editor/behaviors/ResizableBehavior.js',
'newsletter_editor/behaviors/SortableBehavior.js',
'newsletter_editor/behaviors/ShowSettingsBehavior.js',
2015-08-26 18:24:43 +03:00
'newsletter_editor/blocks/base.js',
'newsletter_editor/blocks/container.js',
'newsletter_editor/blocks/button.js',
'newsletter_editor/blocks/image.js',
'newsletter_editor/blocks/divider.js',
'newsletter_editor/blocks/text.js',
'newsletter_editor/blocks/spacer.js',
'newsletter_editor/blocks/footer.js',
'newsletter_editor/blocks/header.js',
'newsletter_editor/blocks/automatedLatestContent.js',
'newsletter_editor/blocks/posts.js',
'newsletter_editor/blocks/social.js',
'components/config.spec.js',
'components/content.spec.js',
'components/heading.spec.js',
'components/save.spec.js',
'components/sidebar.spec.js',
'components/styles.spec.js',
'components/communication.spec.js',
2015-08-26 18:24:43 +03:00
'blocks/automatedLatestContent.spec.js',
'blocks/button.spec.js',
'blocks/container.spec.js',
'blocks/divider.spec.js',
'blocks/footer.spec.js',
'blocks/header.spec.js',
'blocks/image.spec.js',
'blocks/posts.spec.js',
'blocks/social.spec.js',
'blocks/spacer.spec.js',
'blocks/text.spec.js',
],
},
output: {
path: './tests/javascript/testBundles',
filename: '[name].js',
},
resolve: {
modulesDirectories: [
'node_modules',
'assets/js/src',
'tests/javascript/newsletter_editor'
2015-08-26 18:24:43 +03:00
],
alias: {
2016-01-04 17:02:46 +02:00
'sticky-kit': 'vendor/jquery.sticky-kit.js',
2015-08-26 18:24:43 +03:00
'backbone.marionette': 'backbone.marionette/lib/backbone.marionette',
'backbone.supermodel$': 'backbone.supermodel/build/backbone.supermodel.js',
'blob$': 'blob/Blob.js',
'filesaver$': 'filesaver/FileSaver.js'
2015-08-26 18:24:43 +03:00
},
},
externals: {
'jquery': 'jQuery',
'tinymce': 'tinymce',
'interact': 'interact',
'spectrum': 'spectrum',
}
}));
module.exports = config;