웹 앱에서 노드 버전을 수정하는 방법
2537 단어 reactnpmjavascriptnode
1단계 - package.json에 nodeVersionLock 추가
사전 설치 및 사전 시작 스크립트도 추가해야 합니다.
package.json은 다음과 같이 보일 것입니다.
{
"name": "metaindex-frontend",
"nodeVersionLock": "14.13.0",
"scripts": {
"preinstall": "node ./system/npm/preinstall.js",
"prestart": "node ./system/npm/preinstall.js",
"start": "run-p build:tailwindcss start:watchtailwindcss start:cra",
"start:cra": "react-scripts start",
}
}
2단계 - 원하지 않는 노드 버전이 발견되면 오류를 던집니다.
내용./system/npm/preinstall.js
const pkgJson = require('../../package.json');
const nodeVersion = process.versions.node;
let err = false;
if (pkgJson.nodeVersionLock !== nodeVersion) {
console.error(`Please use node ${pkgJson.nodeVersionLock}. Try
nvm install v${pkgJson.nodeVersionLock}
nvm reinstall-packages v${nodeVersion}
nvm uninstall v${nodeVersion}
`);
err = true;
} else {
console.error(`Thanks for using Latest Node version ${pkgJson.nodeVersionLock}.\n`);
}
if (err) {
console.error('');
process.exit(1);
}
3단계 - Dockerfile 및 GitbHub YML 자동 업데이트
이 단계는 선택 사항이며 사용자 지정입니다. 설정에 따라 다릅니다.
내용./system/npm/fix-node-versions.js
const fs = require('fs');
const YAML = require('yamljs');
const replaceFirstLineOfFile = require('file-firstline-replace');
const pkgJson = require('../../package.json');
var filename = 'Dockerfile';
var newHeader = `FROM node:${pkgJson.nodeVersionLock} as builder\n`;
replaceFirstLineOfFile(filename, newHeader, function (error) {
if (error) {
throw error;
}
console.warn('Dockerfile updated');
});
// Replace in gitlab ci file.
var gitlabCiYml = fs.readFileSync('.github/workflows/node.js.yml', 'utf8');
// parse YAML string
var gitlabCiJSON = YAML.parse(gitlabCiYml);
gitlabCiJSON.jobs.build.strategy.matrix['node-version'][0] = pkgJson.nodeVersionLock;
var spaces = 4;
var gitlabCiYmlUpdated = YAML.stringify(gitlabCiJSON, spaces);
fs.writeFileSync('.github/workflows/node.js.yml', gitlabCiYmlUpdated, 'utf8');
console.warn('github CI file updated');
Reference
이 문제에 관하여(웹 앱에서 노드 버전을 수정하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/nsisodiya/how-to-fix-node-version-in-a-web-app-59n5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
{
"name": "metaindex-frontend",
"nodeVersionLock": "14.13.0",
"scripts": {
"preinstall": "node ./system/npm/preinstall.js",
"prestart": "node ./system/npm/preinstall.js",
"start": "run-p build:tailwindcss start:watchtailwindcss start:cra",
"start:cra": "react-scripts start",
}
}
내용
./system/npm/preinstall.js
const pkgJson = require('../../package.json');
const nodeVersion = process.versions.node;
let err = false;
if (pkgJson.nodeVersionLock !== nodeVersion) {
console.error(`Please use node ${pkgJson.nodeVersionLock}. Try
nvm install v${pkgJson.nodeVersionLock}
nvm reinstall-packages v${nodeVersion}
nvm uninstall v${nodeVersion}
`);
err = true;
} else {
console.error(`Thanks for using Latest Node version ${pkgJson.nodeVersionLock}.\n`);
}
if (err) {
console.error('');
process.exit(1);
}
3단계 - Dockerfile 및 GitbHub YML 자동 업데이트
이 단계는 선택 사항이며 사용자 지정입니다. 설정에 따라 다릅니다.
내용./system/npm/fix-node-versions.js
const fs = require('fs');
const YAML = require('yamljs');
const replaceFirstLineOfFile = require('file-firstline-replace');
const pkgJson = require('../../package.json');
var filename = 'Dockerfile';
var newHeader = `FROM node:${pkgJson.nodeVersionLock} as builder\n`;
replaceFirstLineOfFile(filename, newHeader, function (error) {
if (error) {
throw error;
}
console.warn('Dockerfile updated');
});
// Replace in gitlab ci file.
var gitlabCiYml = fs.readFileSync('.github/workflows/node.js.yml', 'utf8');
// parse YAML string
var gitlabCiJSON = YAML.parse(gitlabCiYml);
gitlabCiJSON.jobs.build.strategy.matrix['node-version'][0] = pkgJson.nodeVersionLock;
var spaces = 4;
var gitlabCiYmlUpdated = YAML.stringify(gitlabCiJSON, spaces);
fs.writeFileSync('.github/workflows/node.js.yml', gitlabCiYmlUpdated, 'utf8');
console.warn('github CI file updated');
Reference
이 문제에 관하여(웹 앱에서 노드 버전을 수정하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/nsisodiya/how-to-fix-node-version-in-a-web-app-59n5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const fs = require('fs');
const YAML = require('yamljs');
const replaceFirstLineOfFile = require('file-firstline-replace');
const pkgJson = require('../../package.json');
var filename = 'Dockerfile';
var newHeader = `FROM node:${pkgJson.nodeVersionLock} as builder\n`;
replaceFirstLineOfFile(filename, newHeader, function (error) {
if (error) {
throw error;
}
console.warn('Dockerfile updated');
});
// Replace in gitlab ci file.
var gitlabCiYml = fs.readFileSync('.github/workflows/node.js.yml', 'utf8');
// parse YAML string
var gitlabCiJSON = YAML.parse(gitlabCiYml);
gitlabCiJSON.jobs.build.strategy.matrix['node-version'][0] = pkgJson.nodeVersionLock;
var spaces = 4;
var gitlabCiYmlUpdated = YAML.stringify(gitlabCiJSON, spaces);
fs.writeFileSync('.github/workflows/node.js.yml', gitlabCiYmlUpdated, 'utf8');
console.warn('github CI file updated');
Reference
이 문제에 관하여(웹 앱에서 노드 버전을 수정하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nsisodiya/how-to-fix-node-version-in-a-web-app-59n5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)