版本: @vue/cli-service": "^3.0.0-beta.6
配置了chaiWebpack,但configureWebpack不知道怎么配置,求指點(diǎn)~~
vue.config.js 如下:
module.exports = {
lintOnSave: false,
chainWebpack: config => {
config
.entry('one')
.add('./src/pages/one/one.ts')
.end()
.entry('two')
.add('./src/pages/two/two.ts')
.end()
},
configureWebpack: config => {
if (process.env.NODE_ENV === 'production') {
// mutate config for production...
} else {
// mutate for development...
}
}
}
// vue.config.js
module.exports = {
pages: {
index: {
// entry for the page
entry: 'src/main.js',
// the source template
template: 'public/index.html',
// output as dist/index.html
filename: 'index.html'
},
shareback: {
entry: 'src/shareback.js',
template: 'public/shareback.html',
filename: 'shareback.html'
},
}
}
也是昨天才研究好的
先貼代碼
let path = require('path')
let glob = require('glob')
let fs = require('fs')
let meta = require('./package.json')
let webpack = require("webpack");
//獲取入口js和模板html
function getEntry(globPath) {
let entries = {},
basename, tmp, pathname, appname;
glob.sync(globPath).forEach(function(entry) {
basename = path.basename(entry, path.extname(entry));
tmp = entry.split('/').splice(-3);
pathname = basename; // 正確輸出js和html的路徑
appname = pathname.split('-')[0]
entries[appname] = entry;
});
return entries;
}
let htmls = getEntry('./src/module/**/*.html');
let allJs = getEntry('./src/module/**/*-en.js');//添加后綴方便查找
module.exports = {
chainWebpack: config => {
//設(shè)置路徑別名
config.resolve.alias
.set("assets", path.resolve(__dirname, 'src/assets'))
.set("components", path.resolve(__dirname, 'src/components'))
config.plugins.delete("html")
config.entryPoints.delete("app")
//設(shè)置生產(chǎn)環(huán)境打包配置
if(process.env.NODE_ENV === 'production') {
config
.devtool()
let prefix = meta.envirmentDebug ? "t" : "p"
config
.output
.publicPath('https://xxx.xxx.com/' + prefix + '/' + meta.name + '/' + meta.v)
}
for(let appname in allJs) {
config
.entry(appname)
.clear()
.add(allJs[appname])
.end()
}
for(let appname in htmls) {
let htmlPath = path.resolve(htmls[appname])
config
.plugin(appname)
.use(require('html-webpack-plugin'), [
fs.existsSync(htmlPath) ? {
template: htmlPath,
filename: appname + ".html",
inject: true,
hash: true,
chunks: ['manifest', 'vendor', appname]
} : {}
])
}
}
}
不清楚的 在追問吧~ 先寫到這里
可以直接在vue.config.js 中 設(shè)置 pages屬性來做到
// vue.config.js
module.exports = {
pages: {
index: {
// 入口js的路徑
entry: './src/views/index/entry',
// 頁面模板路徑
template: `./src/views/index/index.html`
}
}
}
pages 可以遍歷獲得
在 @vue/cli-service/lib/config/app.js 中有下面一段,里面已經(jīng)考慮了多頁的情況
// @vue/cli-service/lib/config/app.js
...
const multiPageConfig = options.pages
...
if (!multiPageConfig) {
// default, single page setup.
......
} else {
// multi-page setup
webpackConfig.entryPoints.clear()
const pages = Object.keys(multiPageConfig)
pages.forEach(name => {
const {
entry,
template = `public/${name}.html`,
filename = `${name}.html`
} = multiPageConfig[name]
// inject entry
webpackConfig.entry(name).add(api.resolve(entry))
// inject html plugin for the page
const pageHtmlOptions = Object.assign({}, htmlOptions, {
chunks: ['chunk-vendors', 'chunk-common', name],
template: fs.existsSync(template) ? template : defaultHtmlPath,
filename
})
webpackConfig
.plugin(`html-${name}`)
.use(HTMLPlugin, [pageHtmlOptions])
})
pages.forEach(name => {
const { filename = `${name}.html` } = multiPageConfig[name]
webpackConfig
.plugin(`preload-${name}`)
.use(PreloadPlugin, [{
rel: 'preload',
includeHtmlNames: [filename],
include: {
type: 'initial',
entries: [name]
},
fileBlacklist: [/\.map$/, /hot-update\.js$/]
}])
webpackConfig
.plugin(`prefetch-${name}`)
.use(PreloadPlugin, [{
rel: 'prefetch',
includeHtmlNames: [filename],
include: {
type: 'asyncChunks',
entries: [name]
}
}])
})
}
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問,美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。