А
// BASE config
externals: {
paths_src: PATH_SRC, // нужно для получения доступа к константе из других конфигов
paths_build: PATH_BUILD,
paths_assets: PATH_ASSETS,
paths_dir: PAGES_DIR
},
entry: {
// точки входа
app: ["./src/index.js"]
},
output: {
filename:
js/[name].[chunkhash].js
, // имя файлаpath: PATH_BUILD, // папка куда кладем
publicPath: "/" // относительные ссылки для файлов
},
optimization: {
runtimeChunk: true
},
module: {
rules: [{
test: /\.vue$/,
loader: "vue-loader",
options: {
loader: {
scss: "vue-style-loader!style-loader!css-loader!sass-loader"
}
}
},
{
test: /\.(png|jpe?g|gif|svg|webp|ico|woff|woff2|ttf|eot)$/,
loader: "file-loader",
options: {
name: "[path][name].[hash].[ext]"
}
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
},
resolve: {
// как ищет модули
modules: ["node_modules"],
// файлы подключаемые в приложение без указания расширения
extensions: ["*", ".js", ".css", ".scss"],
alias: {
vue$: "vue/dist/vue.js"
}
},
resolveLoader: {
// как ищет модули для лоадеров
modules: ["node_modules"],
extensions: ["*", ".js", ".css", ".scss"]
},
plugins: [
new VueLoaderPlugin(),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
}),
new CopyWebpackPlugin([
// копируем файлы
{
from:
${PATH_ASSETS}/img
,to:
img
},
{
from:
${PATH_ASSETS}/fonts
,to:
fonts
},
{
from:
${PATH_SRC}/js/config.js
,to:
js
},
{
from:
${PATH_SRC}/save
,to:
save
},
{
from:
${PATH_SRC}/static
,to: ``
}
]),
// Automatic creation any html pages (Don't forget to RERUN dev server)
...PAGES.map(
page =>
new HtmlWebpackPlugin({
template:
${PAGES_DIR}/${page}
,filename:
./${page}
})
)
]
};