فهرست منبع

[parser] #1390 Publish Hue parsers as vanilla JS files, and move source files into src

sreenaths 5 سال پیش
والد
کامیت
f51be5f375
2فایلهای تغییر یافته به همراه84 افزوده شده و 18 حذف شده
  1. 2 2
      package.json
  2. 82 16
      webpack.config.npm.js

+ 2 - 2
package.json

@@ -1,6 +1,6 @@
 {
   "name": "gethue",
-  "version": "4.8.0",
+  "version": "4.8.1",
   "description": "Hue is an Open source SQL Query Editor for Databases/Warehouses",
   "keywords": [
     "Query Editor",
@@ -145,7 +145,7 @@
     "webpack-login": "webpack --config webpack.config.login.js",
     "webpack-workers": "webpack --config webpack.config.workers.js",
     "webpack-npm": "webpack --config webpack.config.npm.js",
-    "publish-gethue": "npm run webpack-npm && cd npm_dist && npm publish",
+    "publish-gethue": "make sql-all-parsers && npm run webpack-npm && cd npm_dist && npm publish",
     "dev": "webpack --watch --config webpack.config.js -d",
     "dev-workers": "webpack --config webpack.config.workers.js --watch -d",
     "less": "./node_modules/.bin/grunt less",

+ 82 - 16
webpack.config.npm.js

@@ -16,39 +16,105 @@
  * limitations under the License.
  */
 
+const path = require('path');
 const { VueLoaderPlugin } = require('vue-loader');
 const CleanWebpackPlugin = require('clean-webpack-plugin');
 const CopyWebpackPlugin = require('copy-webpack-plugin');
 
-const webpackConfig = require('./webpack.config');
+const DIST_DIR = path.join(__dirname, 'npm_dist');
+const JS_ROOT =  path.join(__dirname, '/desktop/core/src/desktop/js');
 
-const distDir = `${__dirname}/npm_dist`;
-
-module.exports = Object.assign({}, webpackConfig, {
-  entry: {
-    'er-diagram': ['./desktop/core/src/desktop/js/components/er-diagram/webcomp.ts']
-  },
+const defaultConfig = Object.assign({}, require('./webpack.config'), {
   mode: 'production',
   optimization: {
     minimize: true
   },
+  plugins: []
+});
+
+const npmSetupConfig = {
+  entry: {
+    'package.json': './package.json'
+  },
   output: {
-    path: `${distDir}/web`
+    path: DIST_DIR,
+    filename: 'package.json'
   },
   plugins: [
-    new CleanWebpackPlugin([distDir]),
-    new VueLoaderPlugin(),
+    new CleanWebpackPlugin([DIST_DIR]),
     new CopyWebpackPlugin({
       patterns: [
-        {from:'./package.json', to: `${distDir}/`},
-        {from:'./NPM-README.md', to: `${distDir}/README.md`},
+        { from: './NPM-README.md', to: `${DIST_DIR}/README.md` },
 
-        {from:'./desktop/core/src/desktop/js/components', to: `${distDir}/components`},
-        {from:'./desktop/core/src/desktop/js/utils/hueUtils.js', to: `${distDir}/utils/hueUtils.js`},
+        { from: `${JS_ROOT}/components`, to: `${DIST_DIR}/src/components` },
+        { from: `${JS_ROOT}/utils/hueUtils.js`, to: `${DIST_DIR}/src/utils/hueUtils.js` },
 
-        {from:'./desktop/core/src/desktop/js/parse', to: `${distDir}/parse`},
-        {from:'./desktop/core/src/desktop/js/sql', to: `${distDir}/sql`},
+        { from: `${JS_ROOT}/parse`, to: `${DIST_DIR}/src/parse` },
+        { from: `${JS_ROOT}/sql`, to: `${DIST_DIR}/src/sql` }
       ]
     })
   ]
+};
+
+const webComponentsConfig = Object.assign({}, defaultConfig, {
+  entry: {
+    'er-diagram': [`${JS_ROOT}/components/er-diagram/webcomp.ts`],
+  },
+  output: {
+    path: `${DIST_DIR}/components`
+  },
+  plugins: [
+    new VueLoaderPlugin()
+  ]
 });
+
+const parserConf = Object.assign({}, defaultConfig, {
+  entry: {
+    'calciteAutocompleteParser': [`${JS_ROOT}/parse/sql/calcite/calciteAutocompleteParser.js`],
+    'calciteSyntaxParser': [`${JS_ROOT}/parse/sql/calcite/calciteSyntaxParser.js`],
+
+    'druidAutocompleteParser': [`${JS_ROOT}/parse/sql/druid/druidAutocompleteParser.js`],
+    'druidSyntaxParser': [`${JS_ROOT}/parse/sql/druid/druidSyntaxParser.js`],
+
+    'elasticsearchAutocompleteParser': [`${JS_ROOT}/parse/sql/elasticsearch/elasticsearchAutocompleteParser.js`],
+    'elasticsearchSyntaxParser': [`${JS_ROOT}/parse/sql/elasticsearch/elasticsearchSyntaxParser.js`],
+
+    'flinkAutocompleteParser': [`${JS_ROOT}/parse/sql/flink/flinkAutocompleteParser.js`],
+    'flinkSyntaxParser': [`${JS_ROOT}/parse/sql/flink/flinkSyntaxParser.js`],
+
+    'genericAutocompleteParser': [`${JS_ROOT}/parse/sql/generic/genericAutocompleteParser.js`],
+    'genericSyntaxParser': [`${JS_ROOT}/parse/sql/generic/genericSyntaxParser.js`],
+
+    'hiveAutocompleteParser': [`${JS_ROOT}/parse/sql/hive/hiveAutocompleteParser.js`],
+    'hiveSyntaxParser': [`${JS_ROOT}/parse/sql/hive/hiveSyntaxParser.js`],
+
+    'impalaAutocompleteParser': [`${JS_ROOT}/parse/sql/impala/impalaAutocompleteParser.js`],
+    'impalaSyntaxParser': [`${JS_ROOT}/parse/sql/impala/impalaSyntaxParser.js`],
+
+    'ksqlAutocompleteParser': [`${JS_ROOT}/parse/sql/ksql/ksqlAutocompleteParser.js`],
+    'ksqlSyntaxParser': [`${JS_ROOT}/parse/sql/ksql/ksqlSyntaxParser.js`],
+
+    'phoenixAutocompleteParser': [`${JS_ROOT}/parse/sql/phoenix/phoenixAutocompleteParser.js`],
+    'phoenixSyntaxParser': [`${JS_ROOT}/parse/sql/phoenix/phoenixSyntaxParser.js`],
+
+    'prestoAutocompleteParser': [`${JS_ROOT}/parse/sql/presto/prestoAutocompleteParser.js`],
+    'prestoSyntaxParser': [`${JS_ROOT}/parse/sql/presto/prestoSyntaxParser.js`]
+  },
+  performance: {
+    hints: false,
+    maxEntrypointSize: 1500000,
+    maxAssetSize: 1500000
+  },
+  output: {
+    path: `${DIST_DIR}/parsers`,
+    library: '[name]',
+    libraryExport: "default",
+    libraryTarget: 'umd'
+  },
+});
+
+module.exports = [
+  npmSetupConfig,
+  webComponentsConfig,
+  parserConf
+];