UNPKG

8-divine

Version:

![8-divine](static/divine.jpg)

87 lines (84 loc) 3.55 kB
const path = require("path"); const VueLoaderPlugin = require("vue-loader/lib/plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const { CleanWebpackPlugin } = require("clean-webpack-plugin"); const webpack = require("webpack"); module.exports = { mode: process.env.NODE_ENV, // 这里的值在 package.json 中的 scripts 中的打包命令中通过 cross-env 来指定了 target: "web", entry: path.resolve(__dirname, "../index.js"), // 入口文件就是根目录下的 index.js output: { path: path.resolve(process.cwd(), "dist-prod"), // 等价于 path: path.resolve(__dirname, "dist-prod"), // 1 // process.cwd() ---> 返回 Node.js 进程的当前工作目录,即执行命令的文件所在的文件夹,这里命令是在 package.json文件中执行的,所在的文件夹是 8-divine // __dirname -------> 返回 源代码所在的目录文件夹,这里源代码文件就是webpack.config.prod.js,所在文件夹就是build, filename: "8divine.js", library: { name: "8divine", // 配置导出库的名称,如使用require引入,这里就是require("8divine") type: "umd", // 配置将库暴露的方式,即配置以何种方式导出库,注意 该属性用来代替下面的 libraryTarget,以后webpack可能移除对 libraryTarget 的支持 // type: "var", // var表示:让你的库加载之后,入口起点的返回值 将会被赋值给一个变量 umdNamedDefine: true, // 当使用 output.library.type: "umd" 时,将 output.library.umdNamedDefine 设置为 true 将会把 AMD 模块命名为 UMD 构建。否则使用匿名 define }, // libraryTarget: "umd", // 配置以何种方式导出库 ---> 将被 output.library.type 代替 // umdNamedDefine: true, // ---------------------> 将被 output.library.umdNamedDefine 代替,当使用 libraryTarget: "umd" 时,设置 output.umdNamedDefine 为 true 将命名由 UMD 构建的 AMD 模块。否则将使用一个匿名的 define。 }, module: { rules: [ { test: /\.vue$/, loader: "vue-loader", options: { compilerOptions: { preserveWhitespace: false, // preserveWhitespace boolean // false ---> 如果设置为 false,则标签之间的空格会被忽略;这能够略微提升一点性能但是可能会影响到内联元素的布局 // true ----> 这意味着编译好的渲染函数会保留所有 HTML 标签之间的空格 }, }, }, { test: /\.css$/, use: ["style-loader", "css-loader"], }, { test: /\.s[ac]ss$/i, use: [ "style-loader", "css-loader", { loader: "sass-loader", options: {}, }, ], }, { test: /\.(svg|otf|ttf|woff2?|eot|gif|png|jpe?g)(\?\S*)?$/, use: [ { loader: "url-loader", options: { limit: 8192, esModule: false, //“[object Module]”问题 }, }, ], }, ], }, plugins: [ new CleanWebpackPlugin(), new VueLoaderPlugin(), new HtmlWebpackPlugin({ title: "Development", // favicon: "./public/favicon.ico", template: "public/index.html", filename: "index.html", inject: true, }), // 开启全局的模块热替换(HMR) new webpack.HotModuleReplacementPlugin(), ], optimization: { moduleIds: "named", }, };