问题描述
我正在阅读 webpack 的“入口”页面,但没有任何内容告诉我该文件的这一部分在做什么。可能这就是我需要知道的,但我不知道 :D
entry: {
'../../Resources/Public/Frontend/js/main.dist': './src/js/main.js','/dist/assets/images/': glob.sync(path.resolve(__dirname,'src/assets/images/**/*.*')),'../../Resources/Public/Frontend/css/main.min': './src/sass/main.scss','/dist/handlebars': glob.sync(path.resolve(__dirname,'src/templates/routes/**/index.handlebars'))
},...
为什么这个物体的两边都有路径?
我想弄清楚为什么这个 webpack.config.js 没有将 src/assets/images 上的图像复制到我的 /Resources/Public/Frontend/assets/images 文件夹中。 我知道是 copyWebpackPlugin 这样做的。 这个脚本在复制之前是否也删除了所有内容,因此它不会复制已删除的文件?
我知道我可以添加 copyWebpackPlugin (from to) 并将我的图像复制到我的 /Frontend 文件夹,但如果我从 /src 中删除图像,则不会删除图像
这是整个文件。
let webpack = require('webpack');
let webPackSettings = require('./webpack.settings.js');
const path = require('path');
const glob = require('glob');
const fs = require('fs');
const LIVE = process.env.NODE_ENV === 'live';
let DEBUG = true;
if (LIVE) {
DEBUG = false;
}
const CleanWebpackPlugin = require('clean-webpack-plugin');
const SpriteLoaderPlugin = require('svg-sprite-loader/plugin');
const LiveReloadplugin = require('webpack-livereload-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const WatchExternalFilesPlugin = require('webpack-watch-files-plugin');
const copyWebpackPlugin = require('copy-webpack-plugin');
const extractSass = new ExtractTextPlugin({
filename: '[name].css',disable: false //Remove debug option in case of source map issues
});
const pluginArrayGeneric = [
new webpack.ProvidePlugin({
$: 'jquery',jQuery: 'jquery'
}),new CleanWebpackPlugin([
'./dist'
],{
root: __dirname,verbose: true,//WRITE CONSOLE LOGS
dry: false //TEST EMULATE DELETE - ONLY CONSOLE LOGS WHAT SHOULD BE DELETED
}),extractSass,new SpriteLoaderPlugin({ plainsprite: true })
];
let pluginArrayDebug = [
new WatchExternalFilesPlugin.default({
files: [
path.resolve(__dirname,'src/templates/partials/**/*.handlebars'),path.resolve(__dirname,'data/**/*.json')
]
}),new LiveReloadplugin(webPackSettings.config.reload)
];
pluginArrayDebug = pluginArrayDebug.concat(pluginArrayGeneric);
let pluginArrayLive = [
new webpack.optimize.OccurrenceOrderPlugin(),new webpack.optimize.UglifyJsPlugin({ mangle: false,sourcemap: false })
];
const deploySettingsFilepath = './deploy.settings.js';
if (fs.existsSync(deploySettingsFilepath)) {
pluginArrayLive.push(new copyWebpackPlugin([{
from: deploySettingsFilepath,to: './dist'
}]));
}
pluginArrayLive = pluginArrayLive.concat(pluginArrayGeneric);
module.exports = {
entry: {
'../../Resources/Public/Frontend/js/main.dist': './src/js/main.js',output: {
path : path.resolve(__dirname),filename: '[name].js'
},watchOptions: {
poll: true
},devtool: (DEBUG) ? 'source-map' : 'none',module : {
rules: [{
test: /\.js$/,loader: 'babel-loader',exclude: '/node_modules/',options: {
presets: [
'es2015','stage-2'
],plugins: ['transform-object-assign']
}
},{
test: /\.scss$/,include: path.resolve('./src/sass/critical.scss'),use: [{
loader: 'style-loader'
},{
loader: 'css-loader'
},{
loader: 'sass-loader'
}]
},exclude: path.resolve('./src/sass/critical.scss'),use: extractSass.extract({
use: [{
loader: 'css-loader',options: {
sourceMap: DEBUG,importLoaders: 2
}
},{
loader: 'postcss-loader',options: {
sourceMap: DEBUG
}
},{
loader: 'resolve-url-loader'
},{
loader: 'sass-loader',options: {
sourceMap: true //must be enabled for resolve-ur-loader to work see: https://github.com/bholloway/resolve-url-loader#important
}
},{
loader: 'cleanup-loader',options: {
test: /\.s?css$/i
}
}],// use style-loader in development
fallback: {
loader: 'style-loader',options: {
sourceMap: DEBUG
}
}
})
},{
test: /\.svg$/i,include: path.resolve('./src/assets/images/svg'),use:[{
loader: 'svg-sprite-loader'
},{
loader: 'svgo-loader',options: {
plugins: [{
removeAttrs: { attrs: '(fill|stroke|fill-opacity)' }
}]
}
}]
},{
test: /\.(eot|ttf|woff|woff2?)$/i,loader: 'file-loader',include: [
path.resolve('./src/assets/fonts/')
],options: {
name: '[name].[ext]',publicPath: '../assets/fonts/',outputPath: 'dist/assets/fonts/',}
},{
test: /\.(jpe?g|png|gif|svg|ico)$/i,exclude: path.resolve('./src/assets/images/svg'),include: [
path.resolve('./node_modules'),path.resolve('./src/assets/images/')
],use: [{
loader: 'file-loader',options: {
name: '[name].[ext]',publicPath: '../assets/images/',outputPath: 'dist/assets/images/'
}
},{
loader: 'image-webpack-loader',options: {
mozjpeg: {
progressive: true,quality: 65
},optipng: {
enabled: true
},pngquant: {
quality: '65-90',speed: 4
},gifsicle: {
interlaced: true
}
}
},{
loader: 'cleanup-loader',options: {
test: /\.(jpe?g|png|gif|svg|eot|ttf|woff2?)$/i
}
}]
},{
test: /\.handlebars$/,use: [{
loader: 'webpack-handlebars-loader',options: {
//Note: use partials without trailing slash
partials: path.resolve(__dirname,relativePathTo: path.resolve(__dirname,'src/templates/routes'),outputpath: 'dist',data: path.resolve(__dirname,'data/**/*.json'),rootData: webPackSettings.config.defaultLanguage
}
}]
},{
test: /\.mp4/i,include: [
path.resolve('./src/assets/videos/')
],publicPath: '../assets/videos/',outputPath: 'dist/assets/videos/'
}
}]
},{
test: /\.PHP$/i,include: [
path.resolve('./src/PHP'),],outputPath: 'dist/PHP/',}
}]
},plugins: DEBUG ? pluginArrayDebug : pluginArrayLive
};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)