Vue-cli 프로젝트 를 한 페이지 에서 여러 페이지 로 만 드 는 방법
다음 파일 을 수정 해 야 합 니 다:
1.다운로드 의존 glob
$npm install glob --save-dev
2.build 의 파일 수정(1)webpack.base.conf.js 수정
다음 코드 추가:
var glob = require('glob');
var entries = getEntry('./src/pages/**/*.js')
module.exports 의
entry: {
app: './src/main.js'
},
주석 을 지우 고 이 줄 코드 를 추가 합 니 다:
entry: entries,
entries 가 무엇 인지 서 두 르 지 말고 아래 를 보 세 요.방법 추가:
// js
function getEntry(globPath) {
var entries = {},
basename, tmp, pathname;
glob.sync(globPath).forEach(function (entry) {
basename = path.basename(entry, path.extname(entry));
pathname = basename.split("_")[0]; //index_main.js index
entries[pathname] = entry;
});
return entries;
}
이 파일 을 이렇게 수정 하면 됩 니 다.(2)webpack.dev.conf.js 수정
다음 코드 추가:
//
var glob = require('glob')
var path = require('path')
module.exports 의 plugins 에 있 는
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
주석 을 지우 고 다음 코드 를 추가 합 니 다:
function getEntry(globPath) {
var entries = {},basename;
glob.sync(globPath).forEach(function (entry) {
basename = path.basename(entry, path.extname(entry));
entries[basename] = entry;
});
return entries;
}
var pages = getEntry('src/pages/**/*.html');
for (var pathname in pages) {
// html ,
var conf = {
filename: pathname + '.html',
template: pages[pathname], //
inject: true, // js
chunks:[pathname]
};
module.exports.plugins.push(new HtmlWebpackPlugin(conf));
}
이 파일 은 여기까지 만 수정 하면 됩 니 다.(3)webpack.prod.conf.js
이 파일 의 수 정 된 방식 은 이전 파일 과 유사 합 니 다.
다음 코드 추가:var glob=require('glob')는 프로젝트 를 만 들 때 선택 할 수 있 는 모든 의존 도 를 yes 로 선택 하기 때문에 프로젝트 의 env 성명 정 의 는 다음 과 같 습 니 다.
var env = process.env.NODE_ENV === 'testing ? require('../config/test.env') : config.build.env ;
그러나 웹 팩.test.conf.js 파일 이 아직 수정 되 지 않 았 기 때문에 이 줄 의 성명 을 다음 줄 로 바 꿔 야 합 니 다.
var env = config.build.env
웹 팩 Config 의 plugins 에 있 는
new HtmlWebpackPlugin({
filename: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
},
chunksSortMode: 'dependency'
}),
설명 이 떨 어 지면 웹 packConfig 를 정의 하 는 성명 뒤에 다음 코드 를 추가 합 니 다.
function getEntry(globPath) {
var entries = {},
basename;
glob.sync(globPath).forEach(function (entry) {
basename = path.basename(entry, path.extname(entry));
entries[basename] = entry;
});
return entries;
}
var pages = getEntry('src/pages/**/*.html');
for (var pathname in pages) {
var conf = {
filename: process.env.NODE_ENV === 'testing'
? pathname + '.html'
: config.build[pathname],
template: pages[pathname],
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
},
chunks:[pathname]
}
webpackConfig.plugins.push(new HtmlWebpackPlugin(conf));
}
이때 이 서류 도 다 수정 되 었 다.3.config 의 파일 수정
이 폴 더 에서 하나의 파일 만 수정 해 야 합 니 다.index.js 이 파일 의 역할 은 파일 경 로 를 찾 은 다음 에 이 파일 이 설정 한 디 렉 터 리 등급 에 따라 포 장 된 파일 과 해당 하 는 등급 의 파일 구 조 를 생 성 하 는 것 입 니 다.다음 코드 추가:
var build = {
env: require('./prod.env'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
productionSourceMap: true,
productionGzip: false,
productionGzipExtensions: ['js', 'css']
}
function getEntry(globPath) {
var entries = {},basename;
glob.sync(globPath).forEach(function(entry) {
basename = path.basename(entry, path.extname(entry));
entries[basename] = entry;
});
return entries;
}
var pages = getEntry('src/pages/**/*.html');
// index: path.resolve(__dirname, '../dist/index.html')
for (var pathname in pages) {
build[pathname] = path.resolve(__dirname, '../dist/' + pathname + '.html')
}
그리고 module.exports 의 build 값 을 방금 설명 을 추가 한 변수 build 로 바 꿉 니 다.포장 후의 항목 등급 구 조 를 수정 하려 면 build 에서 수정 할 수 있 습 니 다.또한 build 에 우리 가 정의 해 야 할 변 수 를 추가 할 수 있 습 니 다.예 를 들 어 fafile.py 와 favicon.ico 를 dist 디 렉 터 리 에 있 는 a 디 렉 터 리 에 복사 하면 build 에서 속성 을 정의 할 수 있 습 니 다.
distA:path.resolve(__dirname, '../dist/a),
그리고 웹 팩.prod.conf.js 에'copy-webpack-plugin'(var CopyWebpackplugin=require('copy-webpack-plugin')이 도입 되 었 기 때문에 웹 팩 Config.plugins 에 다음 코드 를 추가 할 수 있 습 니 다.
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../fabfile.py'),
to: config.build.distA,
template: 'fabfile.py'
}
])
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../favicon.ico'),
to: config.build.distA,
template: 'favicon.ico'
}
])
src 디 렉 터 리 에 pages 폴 더 추가디 렉 터 리 의 등급 구 조 는 이런 형식 으로 배정 된다.
5.포장
이상 의 수정 을 마 쳤 습 니 다.로 컬 실행 에 문제 가 없 지만 포장 후에 문제 가 있 을 수 있 습 니 다.오류 가 발생 할 수 있 습 니 다:webpackJSonp is not defined
해결 방법 은 다음 과 같 습 니 다.webpack.prod.conf.js 파일 의 for(var pathname in pages)순환 에서 정 의 된 conf 에 두 줄 코드 를 추가 합 니 다.
chunksSortMode: 'dependency', // dependency js ;manual js chunks ;
chunks: ['manifest', 'vender', pathname] // js,'manifest', 'vender' js webpack , ,'manifest' 'vender' , js pathname 'vender','vender' 'manifest'.
다시 말 하면 이번 프로젝트 가 단일 페이지 에서 다 중 페이지 프로젝트 로 전환 하 는 과정 입 니 다.webpack.test.conf.js 파일 의 수정 에 대해 후속 수정 이 성공 하면 계속 추가 합 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.