Webpack devServer - 将条目文件与资产文件分开

问题描述 投票:0回答:1

我有以下目录结构......

/dev
    /assets
        [all imported static assets, like WOFFs, SVGs, PNGs etc...]
    /css
        styles.css
    /js
        bundle.js

/src
    /sass
        styles.scss
    /js
        scripts.js

index.html

...以及以下Webpack配置(真正简化):

{
    context: './src/',
    entry: {
        'js/bundle.js': './js/scripts.js',
        'css/styles.css': './sass/styles.scss'
    },
    output: {
        filename: '../[filename]',
        path: './',
        publicPath: '/dev/assets/'
    },

    plugins: [
        new ExtractTextPlugin('../[name]')
    ],
    ...
    devServer: {
        contentBase: './',
        publicPath: '/dev/assets'
        ...
    }
}

这里的概念是默认情况下每个文件都会被放置到dev/assets文件夹中,但是对于条目文件,我可以选择将它们分组到其他文件夹(在/dev下),由它们的条目对象键描述(诀窍是文件名属性的../[filename]值)。

这使我可以完全控制dev文件的文件夹和名称结构,还可以将其余文件(静态资源,如字体文件,SVG,PNG等)收集到dev/assets文件夹中。

这与正常的Webpack构建一样正常,但相同的配置不适用于Webpack dev服务器,因为它只提供dev/assets的文件,并且无法访问它的兄弟文件夹(如dev/js)的文件。

是否有可能以某种方式使开发服务器使用所描述的功能?

更新

index.html,@ chris R的要求:

<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
    <meta charset="utf-8">
    <title>Title</title>
    <link type="text/css" rel="stylesheet" href="/dev/css/styles.css">
    <script src="/dev/js/bundle.js"></script>
</head>
<body>

</body>
</html>
webpack webpack-dev-server
1个回答
0
投票

我之所以使用/dev/assets作为publicPath,是为了自动将所有资产(不是条目)文件收集到assets文件夹中。 (条目文件文件有一个../前缀,请参阅output.filename假装与/dev而不是/dev/assets的相对性)。

经过一番调查后,我意识到我宁愿在特定的outputPath中为url-loaderfile-loader设置一个不同的module.rules,在那里我生成资产文件,所以我可以从webpack配置中删除这个丑陋的黑客。

© www.soinside.com 2019 - 2024. All rights reserved.