1 const path = require("path");
2 const execa = require("execa");
3 const webpack = require("webpack");
4 const CopyWebpackPlugin = require("copy-webpack-plugin");
5 const WebpackAutoInject = require("webpack-auto-inject-version");
6 const ChromeReloadPlugin = require("wcer");
7 const { resolve, page, assetsPath } = require("./util");
9 var gitHash = execa.sync("git", ["rev-parse", "--short", "HEAD"]).stdout;
10 console.log("gitHash:", gitHash);
13 popup: resolve("src/popup"),
14 prompt: resolve("src/prompt"),
15 options: resolve("src/options"),
16 content: resolve("src/content"),
17 background: resolve("src/background"),
18 inject: resolve("src/content/inject")
21 path: resolve("dist"),
23 filename: "js/[name].js",
24 chunkFilename: "js/[name].js"
30 use: ["vue-style-loader", "css-loader"]
34 use: ["vue-style-loader", "css-loader", "sass-loader"]
38 use: ["vue-style-loader", "css-loader", "sass-loader?indentedSyntax"]
45 // Since sass-loader (weirdly) has SCSS as its default parse mode, we map
46 // the "scss" and "sass" values for the lang attribute to the right configs here.
47 // other preprocessors should work out of the box, no loader config like this necessary.
48 scss: ["vue-style-loader", "css-loader", "sass-loader"],
52 "sass-loader?indentedSyntax"
55 // other vue-loader options go here
60 loader: "babel-loader",
61 exclude: /node_modules/
64 test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
68 name: assetsPath("img/[name].[hash:7].[ext]")
72 test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
76 name: assetsPath("media/[name].[hash:7].[ext]")
80 test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
84 name: assetsPath("fonts/[name].[hash:7].[ext]")
91 vue$: "vue/dist/vue.esm.js",
94 extensions: ["*", ".js", ".vue", ".json"]
103 title: "options title",
112 new CopyWebpackPlugin([
114 from: resolve("static")
117 new ChromeReloadPlugin({
119 manifest: resolve("src/manifest.js")
121 new webpack.DefinePlugin({
122 "version.hash": JSON.stringify(gitHash)
124 new WebpackAutoInject({
125 PACKAGE_JSON_PATH: './package.json',
127 AutoIncreaseVersion: true
130 AutoIncreaseVersion: {
131 runInWatchMode: false // it will increase version with every single build!