작은 프로젝트 에서 npm 패키지 버 전 을 관리 하 는 사고방식 과 방법
3103 단어 npm 패키지 관리 도구
필 자 는 최근 에 한 문제 에 부 딪 혔 다.
일부 항목 은 jenkins 와 같은 자동 배치 플랫폼 이 없습니다.전단 배 치 는 모두 로 컬 에서 npm run build 명령 을 실행 하여 압축 패 키 지 를 만 든 다음 에 서버 위 에 올 려 nginx 디 렉 터 리 에 압축 을 풀 었 습 니 다.그러나 가끔 문제 가 발생 합 니 다.예 를 들 어 프로젝트 의 한 구성원 이 다른 그룹 이 쓴 구성 요소 packageA 를 업그레이드 하 였 으 나 다른 구성원 들 은 업그레이드 되 지 않 았 을 수도 있 습 니 다.온라인 에 접속 한 후에 문제 가 생 길 수 있 습 니 다.한 가방 이 괜 찮 습 니 다.만약 에 여러 개의 가방 이 업그레이드 되 지 않 았 다 면 예상 치 못 한 문 제 를 초래 할 수 있 습 니 다.
사고의 방향
우선 이 문제 에 대해 나 는 생각 한 후에 다음 과 같은 몇 가지 문제 가 있다.
해결 하 다.
질문
첫 번 째 문제 해결 방안 은 바로 x.x.x 의 방식 으로 한 가방 의 업 데 이 트 는 반드시 한 사람 이 이 일 을 알 아야 가방 을 업데이트 할 수 있 기 때문에 가방 이름 은 어떠한 표지 도 가지 고 있 지 않 아 도 된다.
문제
두 번 째 문제 에 대하 여
node_modules 의 버 전 은 낮 지만 package.json 의 버 전 은 최신 이기 때문에 우 리 는 하나의 스 크 립 트 를 정 해서 두 버 전이 일치 하 는 지 판단 할 수 있 습 니 다.
const path = require('path');
const projectRoot = process.cwd();
const projectPack = require(path.resolve(projectRoot, 'package.json'));
//
const modules = ['element-ui'];
const allDependencies = {
...(projectPack.dependencies || {}),
...(projectPack.devDependencies || {}),
};
modules.forEach(module => {
try {
const packVersion = allDependencies[module];
// @vue/cli-service, @vue
const realPath = packVersion.aplit('/');
const pack = require(path.resolve(
...[projectRoot, 'node_modules', ...realPath, 'package.json'],
));
const needVersions = packVersion.match(/\d+/g);
const realVersions = pack.version.match(/\d+/g);
for (const i in needVersions) {
if (
isDef(needVersions[i]) &&
isDef(realVersions[i]) &&
parseInt(realVersions[i]) < parseInt(needVersions[i])
) {
exit(module);
}
}
} catch (error) {
exit(module);
}
});
function exit(moduleName) {
throw new Error(`${moduleName} , npm i/npm install`);
}
function isDef(num) {
return num !== null && num !== undefined;
}
package.json 개조 check 스 크 립 트 추가
"scripts": {
"check": "node build/checkNpmPackageVersion.js",
"dev": "npm run check && vue-cli-service serve",
"build": "npm run check && vue-cli-service build",
"lint": "vue-cli-service lint"
},
모자라다4.567917.가방 이름 이 순수 숫자 가 아니라면 비교 에 문제 가 있 습 니 다.우리 회사 의 가방 이름 은 모두 알파,베타 등 을 가지 고 있 지 않 기 때문에 저 는 고려 하지 않 았 습 니 다4.567917.일부 원 격 창고 와 비교 할 수 있 습 니 다.예 를 들 어 npm info 패키지 이름 명령 을 바 꾸 면 결 과 를 비교 할 수 있 습 니 다총결산
이 작은 프로젝트 에서 npm 패키지 버 전 을 관리 하 는 사고 와 방법 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 작은 프로젝트 관리 npm 패키지 버 전 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!