Files
piratepoet/webpack.config.js
2015-08-28 12:20:51 +03:00

155 lines
4.0 KiB
JavaScript

var webpack = require('webpack'),
_ = require('underscore'),
path = require('path'),
baseConfig = {},
config = [];
baseConfig = {
context: __dirname,
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',
'sticky-kit': 'sticky-kit/jquery.sticky-kit',
}
},
node: {
fs: 'empty'
},
module: {
loaders: [
{
test: /\.jsx$/,
loader: 'babel-loader'
},
{
include: require.resolve('backbone'),
loader: 'expose-loader?Backbone',
},
{
include: require.resolve('underscore'),
loader: 'expose-loader?_',
},
{
include: require.resolve('backbone.supermodel'),
loader: 'imports-loader?Backbone=backbone!exports-loader?Backbone.SuperModel',
},
{
include: require.resolve('handlebars'),
loader: 'expose-loader?Handlebars',
}
]
}
};
// Admin
config.push(_.extend({}, baseConfig, {
name: 'admin',
entry: {
vendor: ['handlebars', 'handlebars_helpers'],
mailpoet: ['mailpoet', 'ajax', 'modal', 'notice'],
admin: [
'subscribers/listing.jsx',
'settings.jsx',
'subscribers.jsx',
'newsletters/newsletters.jsx',
'newsletters/list.jsx',
'newsletters/form.jsx'
],
newsletter_editor: [
'underscore',
'backbone',
'backbone.marionette',
'backbone.supermodel',
'interact.js',
'backbone.radio',
//'moment-with-locales',
'tinymce/tinymce.jquery.js',
'tinymce/jquery.tinymce.min.js',
//'tinymce',
//'jquery.tinymce',
'select2',
'spectrum-colorpicker',
'sticky-kit',
//'newsletter_editor/tinymce/wplink.js',
//'newsletter_editor/tinymce/mailpoet_custom_fields/plugin.js',
'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/behaviors/BehaviorsLookup.js',
'newsletter_editor/behaviors/ColorPickerBehavior.js',
'newsletter_editor/behaviors/ContainerDropZoneBehavior.js',
'newsletter_editor/behaviors/DraggableBehavior.js',
'newsletter_editor/behaviors/ResizableBehavior.js',
'newsletter_editor/behaviors/SortableBehavior.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'
}
}));
// Public
config.push(_.extend({}, baseConfig, {
name: 'public',
entry: {
public: ['mailpoet', 'ajax', 'public.js']
},
externals: {
'jquery': 'jQuery'
}
}));
// Test
config.push(_.extend({}, baseConfig, {
name: 'test',
entry: {
testAjax: 'testAjax.js',
},
output: {
path: './tests/javascript/testBundles',
filename: '[name].js',
},
resolve: {
modulesDirectories: [
'node_modules',
'assets/js/src',
'tests/javascript/newsletter_editor'
]
}
}));
module.exports = config;