webpack
30 August 2015
webpack 的output
配置项一开始会觉得有点困惑,一个是path
, 一个是publicPath
, 一开始非常不理解为什么会有两个path,配置
场景1
src\
|- app.js
|- util.js
dist\
public\
|- index.html
假设我的项目目录结构是这样的,src中放的是js源码,public中放的是html, 通常我不希望把编译出来的js和src一同提交到git仓库中,我只希望提交src目录,所以我需要将构建出来的文件放到dist
目录下
这可以通过output
的path
目录来指定
var path = require('path');
module.exports= {
context: path.resolve('js'),
entry: ['./util.js', './app.js'],
output: {
path: path.resolve('dist/js/'),
filename: 'bundle.js'
}
}
在index.html中就能这样引用js
<script src="/dist/js/bundle.js"></script>
但很多时候,在本地开发的时候和部署到服务器上的js路径是不同的,我希望在在服务器上通过 pubilc/assets/js/bundle.js
这个路径来引用,这时候就能用 publicPath
var path = require('path');
module.exports= {
context: path.resolve('js'),
entry: ['./util.js', './app.js'],
output: {
path: path.resolve('dist/js/'),
publicPath: '/public/assets/js/',
filename: 'bundle.js'
}
}
这样当我请求 public/assets/js/bundle.js
的时候, webpack-dev-server会代理到path
的目录下面。 在我本地开发的时候,只要将Js编译到dist目录下面,并且把这个目录加到.gitignore中,当部署到服务器时,把js发布到/public/assets/js目录下面
还剩下一个问题,我现在把index.html
放在public目录下面,这样我就要通过 http://localhost:8080/public/index.html
来访问,但实际上我希望通过访问根目录,http://localhost:8080/index.html
来访问
可以通过
devServer: {
contentBase: 'public'
}
blog comments powered by Disqus