Explorar el Código

为 book-ui 特殊处理

dusenyao hace 9 meses
padre
commit
f43076f1d8
Se han modificado 2 ficheros con 86 adiciones y 74 borrados
  1. 1 0
      package.json
  2. 85 74
      vue.config.js

+ 1 - 0
package.json

@@ -59,6 +59,7 @@
     "babel-plugin-dynamic-import-node": "2.3.3",
     "chalk": "2.4.2",
     "compression-webpack-plugin": "^6.1.1",
+    "copy-webpack-plugin": "^6.4.1",
     "connect": "3.6.6",
     "drag-tree-table": "^2.2.0",
     "eslint": "6.7.2",

+ 85 - 74
vue.config.js

@@ -1,22 +1,22 @@
-'use strict'
-const path = require('path')
-const defaultSettings = require('./src/settings.js')
-const CompressionPlugin = require('compression-webpack-plugin');
+"use strict";
+const path = require("path");
+const defaultSettings = require("./src/settings.js");
+const CompressionPlugin = require("compression-webpack-plugin");
+const CopyWebpackPlugin = require("copy-webpack-plugin");
 
 function resolve(dir) {
-  return path.join(__dirname, dir)
+  return path.join(__dirname, dir);
 }
 
-
-const name = defaultSettings.title // page title
+const name = defaultSettings.title; // page title
 
 // If your port is set to 80,
 // use administrator privileges to execute the command line.
 // For example, Mac: sudo npm run
 // You can change the port by the following methods:
 // port = 9528 npm run dev OR npm run dev --port = 9528
-const port = process.env.port || process.env.npm_config_port || 9590 // dev port
-const webpack = require('webpack')
+const port = process.env.port || process.env.npm_config_port || 9590; // dev port
+const webpack = require("webpack");
 
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {
@@ -27,9 +27,9 @@ module.exports = {
    * In most cases please use '/' !!!
    * Detail: https://cli.vuejs.org/config/#publicpath
    */
-  publicPath: process.env.NODE_ENV === 'development' ? '/' : '/GCLS-Book',
-  outputDir: 'dist',
-  assetsDir: 'static',
+  publicPath: process.env.NODE_ENV === "development" ? "/" : "/GCLS-Book",
+  outputDir: "dist",
+  assetsDir: "static",
   lintOnSave: false,
   productionSourceMap: false,
   devServer: {
@@ -37,36 +37,36 @@ module.exports = {
     open: true,
     overlay: {
       warnings: false,
-      errors: true
+      errors: true,
     },
     proxy: {
       // change xxx-api/login => mock/login
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target: `http://gcls.utschool.cn/`,
-        //target: `https://gcls.helxsoft.cn/`,
+        // target: `http://gcls.utschool.cn/`,
+        target: `https://gcls.helxsoft.cn/`,
         changeOrigin: true,
         pathRewrite: {
-          ['^' + process.env.VUE_APP_BASE_API]: ''
-        }
+          ["^" + process.env.VUE_APP_BASE_API]: "",
+        },
       },
       [process.env.VUE_APP_PDF]: {
-        // target: 'https://file-kf.helxsoft.cn/',
-        target: 'https://file-cs.helxsoft.cn/',
+        target: "https://file-kf.helxsoft.cn/",
+        // target: 'https://file-cs.helxsoft.cn/',
         changeOrigin: true,
         pathRewrite: {
-          ['^' + process.env.VUE_APP_PDF]: ''
-        }
+          ["^" + process.env.VUE_APP_PDF]: "",
+        },
       },
       [process.env.VUE_APP_PDF_API]: {
         target: `https://gcls.helxsoft.cn`,
         changeOrigin: true,
         pathRewrite: {
-          ['^' + process.env.VUE_APP_PDF_API]: '/'
-        }
-      }
+          ["^" + process.env.VUE_APP_PDF_API]: "/",
+        },
+      },
     },
-    after: require('./mock/mock-server.js')
+    after: require("./mock/mock-server.js"),
   },
   configureWebpack: {
     // provide the app's title in webpack's name field, so that
@@ -74,87 +74,98 @@ module.exports = {
     name: name,
     resolve: {
       alias: {
-        '@': resolve('src')
-      }
+        "@": resolve("src"),
+      },
     },
     plugins: [
       new webpack.ProvidePlugin({
-        jQuery: 'jquery',
-        $: 'jquery'
+        jQuery: "jquery",
+        $: "jquery",
+      }),
+      new CopyWebpackPlugin({
+        patterns: [
+          {
+            from: "node_modules/book-ui/dist/img",
+            to: "img",
+            force: true,
+            noErrorOnMissing: true,
+          },
+        ],
       }),
       new CompressionPlugin({
-        algorithm: 'gzip', // 使用gzip压缩
+        algorithm: "gzip", // 使用gzip压缩
         test: /\.js$|\.html$|\.css$/, // 匹配文件名
         minRatio: 0.8, // 压缩率小于0.8才会压缩
         threshold: 10240, // 对超过10k的数据压缩
-        deleteOriginalAssets: false // 是否删除未压缩的源文件,谨慎设置,如果希望提供非gzip的资源,可不设置或者设置为false(比如删除打包后的gz后还可以加载到原始资源文件)
-      })
-    ]
+        deleteOriginalAssets: false, // 是否删除未压缩的源文件,谨慎设置,如果希望提供非gzip的资源,可不设置或者设置为false(比如删除打包后的gz后还可以加载到原始资源文件)
+      }),
+    ],
   },
   chainWebpack(config) {
     // it can improve the speed of the first screen, it is recommended to turn on preload
-    config.plugin('preload').tap(() => [{
-      rel: 'preload',
-      // to ignore runtime.js
-      // https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171
-      fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
-      include: 'initial'
-    }])
+    config.plugin("preload").tap(() => [
+      {
+        rel: "preload",
+        // to ignore runtime.js
+        // https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171
+        fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
+        include: "initial",
+      },
+    ]);
 
     // when there are many pages, it will cause too many meaningless requests
-    config.plugins.delete('prefetch')
+    config.plugins.delete("prefetch");
 
     // set svg-sprite-loader
+    config.module.rule("svg").exclude.add(resolve("src/icons")).end();
     config.module
-      .rule('svg')
-      .exclude.add(resolve('src/icons'))
-      .end()
-    config.module
-      .rule('icons')
+      .rule("icons")
       .test(/\.svg$/)
-      .include.add(resolve('src/icons'))
+      .include.add(resolve("src/icons"))
       .end()
-      .use('svg-sprite-loader')
-      .loader('svg-sprite-loader')
+      .use("svg-sprite-loader")
+      .loader("svg-sprite-loader")
       .options({
-        symbolId: 'icon-[name]'
+        symbolId: "icon-[name]",
       })
-      .end()
+      .end();
 
-    config.when(process.env.NODE_ENV !== 'development', config => {
+    config.when(process.env.NODE_ENV !== "development", (config) => {
       config
-        .plugin('ScriptExtHtmlWebpackPlugin')
-        .after('html')
-        .use('script-ext-html-webpack-plugin', [{
-          // `runtime` must same as runtimeChunk name. default is `runtime`
-          inline: /runtime\..*\.js$/
-        }])
-        .end()
+        .plugin("ScriptExtHtmlWebpackPlugin")
+        .after("html")
+        .use("script-ext-html-webpack-plugin", [
+          {
+            // `runtime` must same as runtimeChunk name. default is `runtime`
+            inline: /runtime\..*\.js$/,
+          },
+        ])
+        .end();
       config.optimization.splitChunks({
-        chunks: 'all',
+        chunks: "all",
         cacheGroups: {
           libs: {
-            name: 'chunk-libs',
+            name: "chunk-libs",
             test: /[\\/]node_modules[\\/]/,
             priority: 10,
-            chunks: 'initial' // only package third parties that are initially dependent
+            chunks: "initial", // only package third parties that are initially dependent
           },
           elementUI: {
-            name: 'chunk-elementUI', // split elementUI into a single package
+            name: "chunk-elementUI", // split elementUI into a single package
             priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
-            test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
+            test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm
           },
           commons: {
-            name: 'chunk-commons',
-            test: resolve('src/components'), // can customize your rules
+            name: "chunk-commons",
+            test: resolve("src/components"), // can customize your rules
             minChunks: 3, //  minimum common number
             priority: 5,
-            reuseExistingChunk: true
-          }
-        }
-      })
+            reuseExistingChunk: true,
+          },
+        },
+      });
       // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
-      config.optimization.runtimeChunk('single')
-    })
-  }
-}
+      config.optimization.runtimeChunk("single");
+    });
+  },
+};