huangshuwei / webpackForSPA

🌈webpack for single page project
MIT License
73 stars 30 forks source link

2个bug #2

Closed crli closed 7 years ago

crli commented 7 years ago
if (currentTarget == "build") { // online mode (线上模式)

    debug = false, devServer = false, minimize = true;

} else if (currentTarget == "dev") { // dev mode (开发模式)

    debug = true, devServer = false, minimize = false;
}

publicPath: debug ? '/webpackForSPA/dist/' : '/webpackForSPA/',

1,线上及开发模式 publicPath 都有问题,不能正常引入文件

2,我试着这样设置

线上及开发模式时候 publicPath: './ ‘ 这样打包正常但是图片路径不正确,打包之后的路径不能正确引入background: url(./img/banner-img-6489cfff.jpg) no-repeat top; 不是css中所引入的background: url(../img/banner-img.jpg) no-repeat center top;

关于图片路径问题,我实在想不出来怎么弄了,求解

huangshuwei commented 7 years ago

@crli 我想应该是文件夹的问题,如果你是通过命令: $ git clone https://github.com/huangshuwei/webpackForSPA.git 是没问题的(刚试了下)。

但是如果直接通过下载的形式,文件夹是‘webpackForSPA-master’,这就导致找不到路径。 解决办法1:通过命令clone到本地 解决办法2:将文件夹的名称‘webpackForSPA-master’改为‘webpackForSPA’

若还有问题再留言

crli commented 7 years ago

我就是直接clone的,不行的,出问题的地方是我上文说的地方,与文件夹没关系,是打包之后文件引入路径不对,我已经提交了修改,不知道您是否看到,修改之后就可以正常使用了

huangshuwei commented 7 years ago

@crli 你的修改思路是对的,我决定合并你的提交。 但是有一点我需要修改下,是这里:

if (currentTarget == "build") { // online mode (线上模式)

    debug = false, devServer = false, minimize = true;

} else if (currentTarget == "dev") { // dev mode (开发模式)

    debug = true, devServer = false, minimize = false;

} else if (currentTarget == "dev-hrm") { // dev HRM mode (热更新模式)

    debug = true, devServer = true, minimize = false;

}

如果是dev模式时,debug变量应该是为ture的,因为这里有一个细节:

...
 new webpack.DefinePlugin({

        /*
         * dev flag
         * (开发标识)
         * */
        __DEV__: debug,
    })
...

所以发布的路径可以根据devserver去判断,发布路径的判断稍作修改:

    /*
     * publish path
     * (发布目录)
     * */
    publicPath: devServer ? '/webpackForSPA/dist/' : './',

另外: 这个bug,如果我在webstorm这种编译器下我是重新不了的,但是当我发布到诸如iis的服务器时,的确会出现路径引用错误的问题,因为iis服务器默认会忽略第一个顶级路径名称‘webpackForSPA’。所以资源的引用应该按照你的思路改成相对路径的。

最后谢谢你的反馈