Я переопределяю конфигурацию веб-пакета, используя vue.config.js:
const BundleTracker = require("webpack-bundle-tracker");
module.exports = {
publicPath: 'http://0.0.0.0:8080',
outputDir: './dist/',
chainWebpack: config => {
config.optimization
.splitChunks(false)
config
.plugin('BundleTracker')
.use(BundleTracker, [{ filename: './webpack-stats.json' }])
config.resolve.alias
.set('__STATIC__', 'static')
config.devServer
.public('http://0.0.0.0:8080')
.host('0.0.0.0')
.port(8080)
.hotOnly(true)
.watchOptions({ poll: 1000 })
.https(false)
.headers({ "Access-Control-Allow-Origin": ["*"] })
}
};
Плагин webpack-bundle-tracker генерирует файл с именем webpack-stats.json:
{
"status": "done",
"publicPath": "http://0.0.0.0:8080/",
"chunks": {
"app": [
{
"name": "app.js",
"publicPath": "http://0.0.0.0:8080/app.js",
"path": "/Users/me/dev/vue-app/dist/app.js"
}
]
}
}
Моя проблема в том, что в зависимости от того, нахожусь ли я в разработке или в производстве, я хочу, чтобы путь к файлу был другим.
- Когда я запускаю
npm run serve
: сгенерированный путь должен быть http://0.0.0.0:8080/app.js
(чтобы файл обслуживался npm, и я мог иметь горячую перезагрузку и т. Д.)
- Когда я запускаю
npm run build
: сгенерированный путь должен быть http://0.0.0.0:8000/static/app.js
(чтобы django мог обслуживать файл. Обратите внимание на номер порта 8000, а не 8080)
Так что мне интересно, есть ли способ для vue.config.js иметь 2 версии, одна из которых будет использоваться serve
, другая - build
.