From ec5a8f76ea764769b8bc4e7cb9518f47e49e19d2 Mon Sep 17 00:00:00 2001 From: spalger Date: Wed, 15 Jul 2015 14:45:08 -0700 Subject: [PATCH] hoist requires in AMD modules and modularize some webpack stuff --- package.json | 4 +- .../optimize/DirectoryNameAsDefaultFile.js | 41 ------------------- src/server/optimize/Optimizer.js | 6 +-- src/server/ui/UiApp.js | 3 +- src/server/ui/autoload.js | 28 ++----------- 5 files changed, 11 insertions(+), 71 deletions(-) delete mode 100644 src/server/optimize/DirectoryNameAsDefaultFile.js diff --git a/package.json b/package.json index 07cb044dfcd4..a0f1a0572047 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "dependencies": { "angular-nvd3": "panda01/angular-nvd3#kibana", "ansicolors": "^0.3.2", + "auto-preload-rjscommon-deps-loader": "^1.0.1", "autoprefixer-loader": "^2.0.0", "babel-jscs": "^1.0.3", "bluebird": "^2.9.27", @@ -90,7 +91,8 @@ "style-loader": "^0.12.3", "through": "^2.3.6", "url-loader": "^0.5.6", - "webpack": "^1.10.0" + "webpack": "^1.10.0", + "webpack-directory-name-as-main": "^1.0.0" }, "devDependencies": { "bower": "^1.4.1", diff --git a/src/server/optimize/DirectoryNameAsDefaultFile.js b/src/server/optimize/DirectoryNameAsDefaultFile.js deleted file mode 100644 index fa3e1d5b8ff8..000000000000 --- a/src/server/optimize/DirectoryNameAsDefaultFile.js +++ /dev/null @@ -1,41 +0,0 @@ -/***** - * Modified clone of https://github.com/webpack/enhanced-resolve/blob/3b88905ad3cb6392f48f7bc57d351891774fd93b/lib/DirectoryDefaultFilePlugin.js - ***** - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -var _ = require('lodash'); -var basename = require('path').basename; - -function DirectoryDefaultFilePlugin(files) {} -module.exports = DirectoryDefaultFilePlugin; - -DirectoryDefaultFilePlugin.prototype.apply = function (resolver) { - resolver.plugin('directory', function (request, done) { - handle(request).then(function (result) { - done(null, result); - }, done); - }); - - var handle = _.memoize(function (req) { - return new Promise(function (resolve, reject) { - var directory = resolver.join(req.path, req.request); - resolver.fileSystem.stat(directory, function (err, stat) { - if (err || !stat) return resolve(); - if (!stat.isDirectory()) return resolve(); - - resolver.doResolve('file', { - path: req.path, - query: req.query, - request: resolver.join(directory, basename(directory)) - }, function (err, result) { - return resolve(result || undefined); - }); - }); - }); - }, function (req) { - return `${req.path}!${req.request}!${req.query}`; - }); -}; diff --git a/src/server/optimize/Optimizer.js b/src/server/optimize/Optimizer.js index 45da6ddb3fc8..48d42c095c4d 100644 --- a/src/server/optimize/Optimizer.js +++ b/src/server/optimize/Optimizer.js @@ -11,7 +11,7 @@ var assets = require('../ui/assets'); var fromRoot = require('../../utils/fromRoot'); var OptmzBundles = require('./OptmzBundles'); var OptmzUiModules = require('./OptmzUiModules'); -var DirectoryNameAsDefaultFile = require('./DirectoryNameAsDefaultFile'); +var DirectoryNameAsMain = require('webpack-directory-name-as-main'); var ExtractTextPlugin = require('extract-text-webpack-plugin'); class Optimizer extends EventEmitter { @@ -49,11 +49,10 @@ class Optimizer extends EventEmitter { plugins: [ new webpack.ResolverPlugin([ - new DirectoryNameAsDefaultFile() + new DirectoryNameAsMain() ]), new webpack.NoErrorsPlugin(), new webpack.optimize.DedupePlugin(), - new webpack.optimize.OccurenceOrderPlugin(), new ExtractTextPlugin('[name].style.css', { allChunks: true }) @@ -66,6 +65,7 @@ class Optimizer extends EventEmitter { { test: /\.(html|tmpl)$/, loader: 'raw' }, { test: /\.png$/, loader: 'url?limit=2048!file?name=[path][name].[ext]' }, { test: /\.(woff|woff2|ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'file?name=[path][name].[ext]' }, + { test: /\/src\/(plugins|ui)\/.+\.js$/, loader: 'auto-preload-rjscommon-deps' } ].concat(modules.loaders), noParse: modules.noParse, }, diff --git a/src/server/ui/UiApp.js b/src/server/ui/UiApp.js index efa2ffdb296b..542eaa07a197 100644 --- a/src/server/ui/UiApp.js +++ b/src/server/ui/UiApp.js @@ -36,8 +36,7 @@ class UiApp { this.uiExports.find(_.get(this, 'spec.uses', [])), ]) .flatten() - .sort() - .uniq(true) + .uniq() .push(this.main) .value() }; diff --git a/src/server/ui/autoload.js b/src/server/ui/autoload.js index 1cc0830c5bfe..6d94e5a90c92 100644 --- a/src/server/ui/autoload.js +++ b/src/server/ui/autoload.js @@ -11,30 +11,10 @@ exports.reload = function () { exports.directives = scan('directives'); exports.filters = scan('filters'); - var excludeStyles = [ - 'ui-styles/mixins.less', - 'ui-styles/variables.less', - ]; - - exports.styles = _.union( - [ - 'ui-styles/theme.less', - 'ui-styles/base.less' - ], - scan('ui-styles', true).filter(function (file) { - var i = excludeStyles.indexOf(file); - if (i > -1) { - excludeStyles.splice(i, 1); - return false; - } - - return true; - }) - ); - - if (excludeStyles.length) { - throw new Error(`Styles which were supposed to be excluded from autoload not found! ${excludeStyles}`); - } + var base = ['ui-styles/theme.less', 'ui-styles/base.less']; + var exclude = ['ui-styles/mixins.less', 'ui-styles/variables.less']; + var found = scan('ui-styles', true); + exports.styles = _.difference(_.union(base, found), exclude); exports.uiComponents = [ 'chrome',