PHP와 React 프로젝트에 webpack을 사용하고 있습니다. webpack 파일 로더와 함께 .scss 파일에서 배경 이미지를로드하고 싶지만 어떤 이유인지 모르겠지만 img
-folder는 복사되지 않고 내 dist
-folder 폴더로 내 보냅니다. 나는 또한 loader: 'file-loader?name=/dist/img/[name].[ext]',
을 시도하지만 운Webpack 파일 로더가 이미지를 내보내기하지 않습니다.
var webpack = require("webpack");
var path = require("path");
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var WatchLiveReloadPlugin = require('webpack-watch-livereload-plugin');
var DIST_DIR = path.resolve(__dirname, "dist");
var SRC_DIR = path.resolve(__dirname, "src");
var extractPlugin = new ExtractTextPlugin({
filename: 'main.css'
});
module.exports = {
entry: ['babel-polyfill', SRC_DIR + "/app/index.js"],
output: {
path: DIST_DIR + "/app",
filename: "bundle.js",
publicPath: "/dist"
},
watch: true,
module: {
rules: [
{
test: /\.js$/,
include: SRC_DIR,
loader: "babel-loader",
exclude: /node_modules/,
query: {
presets: ["react", "es2015", "stage-2"], plugins: ["transform-decorators-legacy", "transform-class-properties"]
}
},
{
test: /\.scss$/,
use: extractPlugin.extract({
fallback: "style-loader",
use: ["css-loader", "sass-loader", "resolve-url-loader"]
})
},
{
test: /\.css$/,
use: ["css-loader", "sass-loader", "resolve-url-loader"]
},
{
test: /\.(jpg|png)$/,
use: [
{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'img/',
publicPath: 'img/'
}
}
]
}
]
},
plugins: [
extractPlugin,
new WatchLiveReloadPlugin({
port: 'localhost',
files: [
'./dist/app/*.css',
'./dist/**/*.js',
'./src/app/**/*.png',
'./src/app/**/*.jpg',
'./src/app/**/.*.scss',
'./src/**/*.php',
'./src//*.js'
]
})
]
};
: 아래 webpack.config.js입니다.
내 파일 구조는 다음과 같다 : 나는이 시도 내 .scss
에서 다음
-- dist
-- app
bundle.js
main.css
-- src
-- app
-- css
main.scss
-- img
someimage.jpg
:
background-image: url('/img/someimage.jpg');
사람이 여기에 문제가 있는지 아이디어가 있습니까?
지금까지는 작동하지만 폴더에 이미지가 여러 개인 경우 어떻게해야합니까? 각 단일 이미지 파일을 가져 오지 않으려 고합니다. – Steve
https://stackoverflow.com/questions/37313954/how-to-url-loader-multiple-images-in-webpack 시도하지 않았지만 유망 해 보입니다. –
오 이런 사람? 왜 webpack은 일을 그렇게 복잡하게 만드나요?!? 어쨌든, 제안 해 주셔서 감사합니다 :-) – Steve