function version() { return { hash: git.long(), tag: git.tag(), version: process.env.npm_package_version }; }
"init": function() { console.log("Reading git version info"); var git = require('git-rev-sync'); gitTag = git.tag(); gitBranch = git.branch(); gitLong = git.long(); gitShort = git.short(); },
} else { // Not a directory next(); } } catch (error) { res.send(error); } } else { next(); } }); // Set version number // TODO: Consider embedding version in project try { app_version = gitSync.tag(); } catch(error) { // FIXME: await file read VERSION if it exists app_version = ''; } // Load cloudcmd app.use(cloudcmd({ socket: socket, /* used by Config, Edit (optional) and Console (required) */ config: { /* config data (optional) */ auth: false, /* this is the default setting, but using it here to reset */ showKeysPanel: false, /* disable the buttons at the bottom of the view */ root: '/', /* set the root path. change to HOME to use homedir */ prefix: BASE_URI, /* base URL or function which returns base URL (optional) */ //TODO: could we set this using get params? or post params for when you first "create a session" ?
import baseConfig from './base.config'; export default { ...baseConfig, module: { loaders: [ ...baseConfig.module.loaders ] }, plugins: [ new webpack.DefinePlugin({ 'process.env': { BROWSER: JSON.stringify(true), NODE_ENV: JSON.stringify('production'), // FIXME this requires we put .git into the docker image :( VERSION: JSON.stringify(git.tag()) }, global: { TYPED_ARRAY_SUPPORT: JSON.stringify(false) } }), // optimizations new webpack.optimize.DedupePlugin(), new webpack.optimize.OccurenceOrderPlugin(), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false, screw_ie8: true, sequences: true, dead_code: true,
module.exports = function(options) { // console.log(options.prod ? "Using PRODUCTION options\n" : "Using DEV options\n"); // STYLE LOADERS var cssLoaders = "style-loader!css-loader!postcss-loader", scssLoaders = "style!css!postcss-loader!sass?outputStyle=expanded"; // DIRECTORY CLEANER var cleanDirectories = ["dist"]; // OUTPUT PATH var outputPath = path.join(root_dir, "assets"); // COMMON PLUGINS var plugins = [ new webpack.optimize.DedupePlugin(), new Clean(cleanDirectories), new webpack.DefinePlugin({ APP_VERSION: JSON.stringify(git.tag()) }) ]; if (options.prod) { // WRAP INTO CSS FILE cssLoaders = extractForProduction(cssLoaders); scssLoaders = extractForProduction(scssLoaders); // PROD PLUGINS plugins.push(new webpack.DefinePlugin({'process.env': {NODE_ENV: '"production"'}})); plugins.push(new ExtractTextPlugin("app.css")); plugins.push(new webpack.optimize.UglifyJsPlugin({warnings: false, minimize: true, sourceMap: false, compress: true, output: {screw_ie8: true}})); plugins.push(new webpack.optimize.CommonsChunkPlugin("vendors", "vendors.js")); // PROD OUTPUT PATH outputPath = path.join(root_dir, "dist"); } else { plugins.push(new webpack.DefinePlugin({'process.env': {NODE_ENV: '"development"'}})); plugins.push(new webpack.HotModuleReplacementPlugin()); } var config = { entry: { app: options.prod ? path.resolve(root_dir, "app/Main.js") : [ "webpack-dev-server/client?http://localhost:8080", "webpack/hot/only-dev-server", path.resolve(root_dir, "app/Main-dev.js") ] }, output: { path: outputPath, filename: "app.js", pathinfo: !options.prod, sourceMapFilename: "[name].js.map" }, devtool: options.prod ? "source-map" : "eval", debug: options.prod ? false : true, module: { loaders: [ { test: /\.jsx$/, include: [path.join(root_dir, "app"), path.join(root_dir, "node_modules/react-foundation-apps"), "/home/sigve/Dev/graphene/react-foundation-apps"], loaders: options.prod ? ["babel-loader"] : ["babel-loader?cacheDirectory"] }, { test: /\.js$/, exclude: [/node_modules/, path.resolve(root_dir, "../dl/node_modules")], loader: "babel-loader", query: {compact: false, cacheDirectory: true} }, { test: /\.json/, loader: "json" }, { test: /\.coffee$/, loader: "coffee-loader" }, { test: /\.(coffee\.md|litcoffee)$/, loader: "coffee-loader?literate" }, { test: /\.css$/, loader: cssLoaders }, { test: /\.scss$/, loader: scssLoaders }, { test: /\.woff$/, loader: "url-loader?limit=100000&mimetype=application/font-woff" }, { test: /.*\.svg$/, loaders: ["svg-inline-loader", "svgo-loader"] }, { test: /\.md/, loader: 'html?removeAttributeQuotes=false!remarkable' } ], postcss: function () { return [precss, autoprefixer]; } }, resolve: { alias: {bytebuffer: path.resolve(root_dir, "../dl/node_modules/bytebuffer")}, root: [path.resolve(root_dir, "./app"), path.resolve(root_dir, "../dl/src")], extensions: ["", ".js", ".jsx", ".coffee", ".json"], modulesDirectories: ["node_modules"], fallback: [path.resolve(root_dir, "./node_modules")] }, resolveLoader: { root: path.join(root_dir, "node_modules"), fallback: [path.resolve(root_dir, "./node_modules")] }, plugins: plugins, root: outputPath, remarkable: { preset: "full", typographer: true } }; if(options.prod) config.entry.vendors = [ "react", "react-dom", "classnames", "react-router", "highcharts/highstock", "counterpart", "react-translate-component", "perfect-scrollbar", "jdenticon", "react-notification-system", "react-tooltip", "whatwg-fetch", "alt", "react-json-inspector", "immutable", "lzma", "bytebuffer", "lodash" ]; return config; }
}, { test: /\.woff.?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'url-loader?limit=10000&minetype=application/font-woff' }, { test: /\.(ttf|eot)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'file-loader' }, { test: /\.(jpe?g|png|gif|svg)$/i, loader: 'file-loader?digest=base64' }] }, plugins: [ new webpack.DefinePlugin({ __VERSION__: JSON.stringify(git.short()), __BRANCH__: JSON.stringify(git.branch()), __TAG__: JSON.stringify(git.tag()), __HOST__: JSON.stringify(require('os').hostname()), __BUILDDATE__: +new Date(), __PURPOSE__: JSON.stringify(process.env.PURPOSE || 'local') }), // Put CSS into it's own file new ExtractTextPlugin('[name].bundle.css', { allChunks: true }), // Live reload configuration comes from uwsgi new LiveReloadPlugin({ port: process.env.LIVE_RELOAD_PORT || 35279 }), new webpack.optimize.DedupePlugin(), new webpack.optimize.CommonsChunkPlugin({
module.exports = function(options) { // console.log(options.prod ? "Using PRODUCTION options\n" : "Using DEV options\n"); // STYLE LOADERS var cssLoaders = [ { loader: "style-loader" }, { loader: "css-loader" }, { loader: "postcss-loader" } ]; var scssLoaders = [ { loader: "style-loader" }, { loader: "css-loader" }, { loader: "postcss-loader", options: { plugins: [require("autoprefixer")] } }, { loader: "sass-loader", options: { outputStyle: "expanded" } } ]; // OUTPUT PATH var outputPath = path.join(root_dir, "assets"); // COMMON PLUGINS var plugins = [ new webpack.optimize.OccurrenceOrderPlugin(), new webpack.DefinePlugin({ APP_VERSION: JSON.stringify(git.tag()), __ELECTRON__: !!options.electron, "__HASH_HISTORY__": !!options.hash }) ]; if (options.prod) { // PROD OUTPUT PATH let outputDir = options.electron ? "electron" : options.hash ? "hash-history" : "dist"; outputPath = path.join(root_dir, outputDir); // DIRECTORY CLEANER var cleanDirectories = [outputDir]; // WRAP INTO CSS FILE const extractCSS = new ExtractTextPlugin("app.css"); cssLoaders = extractCSS.extract({fallbackLoader: "style-loader", loader: [{loader: "css-loader"}, {loader: "postcss-loader", options: { plugins: [require("autoprefixer")] }}]} ); scssLoaders = extractCSS.extract({fallbackLoader: "style-loader", loader: [{loader: "css-loader"}, {loader: "postcss-loader", options: { plugins: [require("autoprefixer")] }}, {loader: "sass-loader", options: {outputStyle: "expanded"}}]} ); // PROD PLUGINS plugins.push(new Clean(cleanDirectories, {root: root_dir})); plugins.push(new webpack.DefinePlugin({"process.env": {NODE_ENV: JSON.stringify("production")}})); plugins.push(extractCSS); plugins.push(new webpack.LoaderOptionsPlugin({ minimize: true, debug: false })); if (!options.noUgly) { plugins.push(new webpack.optimize.UglifyJsPlugin({ sourceMap: true, compress: { warnings: true }, output: { screw_ie8: true } })); } } else { // plugins.push(new webpack.optimize.OccurenceOrderPlugin()); plugins.push(new webpack.DefinePlugin({"process.env": {NODE_ENV: JSON.stringify("development")}})); plugins.push(new webpack.HotModuleReplacementPlugin()); plugins.push(new webpack.NoEmitOnErrorsPlugin()); } var config = { entry: { // vendor: ["react", "react-dom", "highcharts/highstock", "graphenejs-lib", "lodash"], app: options.prod ? path.resolve(root_dir, "app/Main.js") : [ "react-hot-loader/patch", "webpack-hot-middleware/client", path.resolve(root_dir, "app/Main-dev.js") ] }, output: { publicPath: "/", path: outputPath, filename: "[name].js", pathinfo: !options.prod, sourceMapFilename: "[name].js.map" }, devtool: options.prod ? "cheap-module-source-map" : "eval", module: { rules: [ { test: /\.jsx$/, include: [path.join(root_dir, "app"), path.join(root_dir, "node_modules/react-foundation-apps"), "/home/sigve/Dev/graphene/react-foundation-apps"], use: [ { loader: "babel-loader", options: { cacheDirectory: options.prod ? false : true } } ] }, { test: /\.js$/, exclude: [/node_modules/], loader: "babel-loader", options: {compact: false, cacheDirectory: true} }, { test: /\.json/, loader: "json-loader", exclude: [ path.resolve(root_dir, "lib/common"), path.resolve(root_dir, "app/assets/locales") ] }, { test: /\.coffee$/, loader: "coffee-loader" }, { test: /\.(coffee\.md|litcoffee)$/, loader: "coffee-loader?literate" }, { test: /\.css$/, loader: cssLoaders }, // var cssLoaders = "style-loader!css-loader!postcss-loader", // scssLoaders = "style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded"; { test: /\.scss$/, loader: scssLoaders }, { test: /\.png$/, exclude:[path.resolve(root_dir, "app/assets/asset-symbols")], use: [ { loader: "url-loader", options: { limit: 100000 } } ] }, { test: /\.woff$/, use: [ { loader: "url-loader", options: { limit: 100000, mimetype: "application/font-woff" } } ] }, { test: /.*\.svg$/, loaders: ["svg-inline-loader", "svgo-loader"] }, { test: /\.md/, use: [ { loader: "html-loader", options: { removeAttributeQuotes: false } }, { loader: "remarkable-loader", options: { preset: "full", typographer: true } } ] } ] }, resolve: { modules: [ path.resolve(root_dir, "./app"), path.resolve(root_dir, "./lib"), "node_modules" ], extensions: [".js", ".jsx", ".coffee", ".json"], // fallback: [path.resolve(root_dir, "./node_modules")] }, resolveLoader: { modules: [path.join(root_dir, "node_modules")], // fallback: [path.resolve(root_dir, "./node_modules")] }, plugins: plugins }; // if(options.prod) config.entry.vendors = [ // "classnames", "react-router", "highcharts/highstock", "counterpart", "react-translate-component", // "perfect-scrollbar", "jdenticon", "react-notification-system", "react-tooltip", // "whatwg-fetch", "alt", "react-json-inspector", // "immutable", "graphenejs-lib" // ]; return config; };