|
@@ -0,0 +1,84 @@
|
|
|
|
|
+var fs = require('fs');
|
|
|
|
|
+var webpack = require('webpack');
|
|
|
|
|
+var path = require('path');
|
|
|
|
|
+
|
|
|
|
|
+var jqueryShim = new webpack.ProvidePlugin({
|
|
|
|
|
+ $: 'jquery',
|
|
|
|
|
+ jQuery: 'jquery',
|
|
|
|
|
+ 'window.jQuery': 'jquery'
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+var PROD = JSON.parse(process.env.PROD_ENV || '0');
|
|
|
|
|
+
|
|
|
|
|
+var plugins = [];
|
|
|
|
|
+
|
|
|
|
|
+if (PROD) {
|
|
|
|
|
+ plugins.push(new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Note that since we are using 'npm install' and stopped using --legacy-bundling,
|
|
|
|
|
+// we are not ensured which version is installed and where. We will try cloudera-ui
|
|
|
|
|
+// first, and if it is not there we will let 'require' resolve it. The latter means
|
|
|
|
|
+// that a version compatible with cloudera-ui and other libraries was installed at the
|
|
|
|
|
+// top of the node_modules directory.
|
|
|
|
|
+var lodashDir = path.resolve('node_modules/lodash');
|
|
|
|
|
+if (!fs.exists(lodashDir)) {
|
|
|
|
|
+ lodashDir = require.resolve('lodash');
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+module.exports = {
|
|
|
|
|
+ devtool: 'source-map',
|
|
|
|
|
+ progress: true,
|
|
|
|
|
+ host: '0.0.0.0',
|
|
|
|
|
+ port: '8080',
|
|
|
|
|
+ resolve: {
|
|
|
|
|
+ extensions: ['', '.json', '.jsx', '.js'],
|
|
|
|
|
+
|
|
|
|
|
+ modulesDirectories: [
|
|
|
|
|
+ 'node_modules',
|
|
|
|
|
+ 'js',
|
|
|
|
|
+ 'desktop/core/src/desktop/static/desktop/js/cui'
|
|
|
|
|
+ ],
|
|
|
|
|
+ alias: {
|
|
|
|
|
+ // any bootstrap modules should really resolve to node_modules/bootstrap/js
|
|
|
|
|
+ bootstrap: 'bootstrap/js',
|
|
|
|
|
+ 'cloudera-ui': 'cui',
|
|
|
|
|
+ _: 'lodash',
|
|
|
|
|
+ komapping: 'knockout.mapping',
|
|
|
|
|
+ 'query-command-supported': 'query-command-supported/src/queryCommandSupported',
|
|
|
|
|
+ pubsub: 'pubsub.js/pubsub'
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ entry: {
|
|
|
|
|
+ cui: ['./desktop/core/src/desktop/static/desktop/js/cui.js']
|
|
|
|
|
+ },
|
|
|
|
|
+ output: {
|
|
|
|
|
+ path: './desktop/core/src/desktop/static/desktop/js',
|
|
|
|
|
+ filename: 'cui-bundle.js'
|
|
|
|
|
+ },
|
|
|
|
|
+ module: {
|
|
|
|
|
+ loaders: [
|
|
|
|
|
+ { test: /\.(html)$/, loader: 'html?interpolate&removeComments=false' },
|
|
|
|
|
+ { test: /\.less$/, loader: 'style-loader!css-loader!less-loader' },
|
|
|
|
|
+ { test: /\.css$/, loader: 'style-loader!css-loader' },
|
|
|
|
|
+ { test: /\.(woff2?|ttf|eot|svg)$/, loader: 'file-loader' },
|
|
|
|
|
+ {
|
|
|
|
|
+ test: /\.jsx?$/,
|
|
|
|
|
+ exclude: /node_modules/,
|
|
|
|
|
+ loader: 'babel-loader',
|
|
|
|
|
+ query: {
|
|
|
|
|
+ presets: ['es2015']
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ // expose lodash and jquery for knockout templates to access
|
|
|
|
|
+ { test: /lodash$/, loader: 'expose?_' },
|
|
|
|
|
+ { test: /jquery/, loader: 'expose?$!expose?jQuery' },
|
|
|
|
|
+
|
|
|
|
|
+ // needed for moment-timezone
|
|
|
|
|
+ { include: /\.json$/, loaders: ['json-loader'] }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ plugins: plugins
|
|
|
|
|
+};
|