Luk*_*kas 0 webpack webpack-dev-server webpack-2 angular
我正在尝试通过 webpack 2 开发服务器在开发中提供静态文件(图像)。我似乎无法让它发挥作用。这将是我的 webpack 文件,我正在为文件夹中包含图像的 Angular 2 应用程序提供服务/src/assets/images:
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var helpers = require('./helpers');
module.exports = {
entry: {
'polyfills': './src/polyfills.ts',
'app': './src/main.ts',
},
resolve: {
extensions: ['.ts', '.js']
},
module: {
rules: [
{
test: /\.ts$/,
loaders: [{
loader: 'awesome-typescript-loader',
options: { configFileName: helpers.root('src', 'tsconfig.json') }
} , 'angular2-template-loader']
},
{
test: /\.html$/,
loader: 'html-loader'
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
loader: 'file-loader?name=assets/[name].[ext]'
},
{
test: /\.scss$/,
exclude: /node_modules/,
loaders: ['raw-loader', 'sass-loader'] // sass-loader not scss-loader
},
{
test: /\.css$/,
loaders: ['style-loader', 'css-loader']
}
]
},
output: {
path: path.join(__dirname, '../src/assets'),
publicPath: '/assets/'
},
plugins: [
// Workaround for angular/angular#11580
new webpack.ContextReplacementPlugin(
// The (\\|\/) piece accounts for path separators in *nix and Windows
/angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/,
helpers.root('./src'), // location of your src
{} // a map of your routes
),
new webpack.optimize.CommonsChunkPlugin({
name: ['app', 'vendor', 'polyfills']
}),
new HtmlWebpackPlugin({
template: 'src/index.html'
})
]
};
Run Code Online (Sandbox Code Playgroud)
我在这里看到 2 个相关部分,都不起作用:
file-loader?name=assets/[name].[ext]output设置为的字段
output: {
path: path.join(__dirname, '../src/assets'),
publicPath: '/assets/'
},
Run Code Online (Sandbox Code Playgroud)当我加载像http://localhost:8080/assets/images/welt_plus.png这样的图像时,我得到一个404
无法获取 /assets/images/welt_plus.png
TL;DR自定义开发服务器,webpack.config.js以便除了构建的文件之外,它还提供静态文件。如果您只提供静态文件 (*),您甚至不需要文件加载器。配置如下,以提供文件src/夹中的静态文件,因为它webpack.config.js位于项目根目录中:
module.exports = {
...
devServer: {
contentBase: [..., path.resolve(__dirname, 'src')],
...
}
}
Run Code Online (Sandbox Code Playgroud)
(*) “只提供静态服务” = (1) 你不require('assets/images/foo.png')从你的代码做和 (2) 你的 CSS/SCSS 也不需要任何资产,例如不包含任何url(...). 不过,离开文件加载器并没有什么坏处。
更长的解释是静态“资产”文件,例如应用程序使用<img src="the/static/file.png" />的文件,不会被文件加载器或 Webpack 处理。这些是浏览器请求的,服务器应该拥有它们。与“模块”,即代码和资源所要求的WebPack交易require(...),import ... from ...等等。在规则webpack.config.js的文件加载器说,如果某些模块需要与名称PNG,JPEG结束另一个模块,...,然后使用文件加载程序。
上面的配置只是指示 Webpack 开发服务器从给定目录提供静态文件。
| 归档时间: |
|
| 查看次数: |
3538 次 |
| 最近记录: |