npm으로 클린 설치(node_modules 삭제 및 설치)를 수행하려면 어떻게 해야 합니까?
node_modules 아래에 있는 모든 모듈의 빌드를 취소하도록 npm을 얻는 방법이 있습니까?모든 빌드 아티팩트를 제거하지만 재구축하지 않는 npm 재구축과 같은 것입니까?
node_module 디렉토리를 삭제하면 됩니다.
rm -rf node_modules/
실제로 이 작업에 대한 특수 명령이 있습니다.
npm ci
삭됩다니가 됩니다.node_modules
및 패키지를 합니다.package-lock.json
더 많은 정보: https://docs.npmjs.com/cli/ci.html
나는 이것을 내 패키지에 추가했습니다.json:
"build": "npm build",
"clean": "rm -rf node_modules",
"reinstall": "npm run clean && npm install",
"rebuild": "npm run clean && npm install && npm run build",
잘 작동하는 것 같습니다.
https://github.com/voidcosmos/npkill 을 사용해 보십시오.
npx npkill
모든 node_dll을 찾아서 제거할 수 있습니다.
패키지 tarball을 다운로드하여 npm cache 디렉토리에 압축을 푸는 'npm cache' 명령을 사용할 수 있습니다.
그런 다음 원본을 복사할 수 있습니다.
https://groups.google.com/forum/ ?에서 groups=#!topic/npm-/mwLuZZkHkfU에서 수집한 아이디어를 사용하여 다음과 같은 노드 스크립트를 작성했습니다.보증 없음, YMMV 등.
var fs = require('fs'),
path = require('path'),
exec = require('child_process').exec,
util = require('util');
var packageFileName = 'package.json';
var modulesDirName = 'node_modules';
var cacheDirectory = process.cwd();
var npmCacheAddMask = 'npm cache add %s@%s; echo %s';
var sourceDirMask = '%s/%s/%s/package';
var targetDirMask = '%s/node_modules/%s';
function deleteFolder(folder) {
if (fs.existsSync(folder)) {
var files = fs.readdirSync(folder);
files.forEach(function(file) {
file = folder + "/" + file;
if (fs.lstatSync(file).isDirectory()) {
deleteFolder(file);
} else {
fs.unlinkSync(file);
}
});
fs.rmdirSync(folder);
}
}
function downloadSource(folder) {
var packageFile = path.join(folder, packageFileName);
if (fs.existsSync(packageFile)) {
var data = fs.readFileSync(packageFile);
var package = JSON.parse(data);
function getVersion(data) {
var version = data.match(/-([^-]+)\.tgz/);
return version[1];
}
var callback = function(error, stdout, stderr) {
var dependency = stdout.trim();
var version = getVersion(stderr);
var sourceDir = util.format(sourceDirMask, cacheDirectory, dependency, version);
var targetDir = util.format(targetDirMask, folder, dependency);
var modulesDir = folder + '/' + modulesDirName;
if (!fs.existsSync(modulesDir)) {
fs.mkdirSync(modulesDir);
}
fs.renameSync(sourceDir, targetDir);
deleteFolder(cacheDirectory + '/' + dependency);
downloadSource(targetDir);
};
for (dependency in package.dependencies) {
var version = package.dependencies[dependency];
exec(util.format(npmCacheAddMask, dependency, version, dependency), callback);
}
}
}
if (!fs.existsSync(path.join(process.cwd(), packageFileName))) {
console.log(util.format("Unable to find file '%s'.", packageFileName));
process.exit();
}
deleteFolder(path.join(process.cwd(), modulesDirName));
process.env.npm_config_cache = cacheDirectory;
downloadSource(process.cwd());
한마디로 아니오.
둘로, 아직.
하지만, 아직 해결되지 않은 문제가 있습니다.--no-build
에 깃발을 내미는.npm install
건물 없이 설치를 수행할 수 있습니다. 요청한 작업에 사용할 수 있습니다.
npm ci
이 시나리오에서는 작동하지만 다음과 같은 경우에만package.json
그리고.package-lock.json
동기화되어 있습니다. 이는 충돌을 신속하게 해결하기 위해 작업 중이거나 디렉터리/디렉토리 링크를 제거하여 디렉터리 수준에서 업데이트하는 경우에는 항상 그렇지 않을 수 있습니다.질문에 대한 포괄적인 대답은 다음과 같습니다.
- 을 합니다.
package.json
원하는 것은 무엇이든 사용하고 필요하지 않은 것은 제거합니다. - 「 」를 합니다.
package-lock.json
이처럼것.npm install --package-lock-only
- 려달을 합니다.
npm ci
이렇게 하면 모든 아티팩트가 제거되고 재구성되지 않습니다.
윈도우즈 환경의 경우:
"scripts": {
"clean": "rmdir /s /q node_modules",
...
}
나는 패키지 안에 몇 줄을 추가했습니다.json:
"scripts": {
...
"clean": "rmdir /s /q node_modules",
"reinstall": "npm run clean && npm install",
"rebuild": "npm run clean && npm install && rmdir /s /q dist && npm run build --prod",
...
}
원하신다면clean
당신만이 이것을 사용할 수 있습니다.rimraf node_modules
.
npm ci
FDisk에서 언급한 대로 사용할 수 있습니다.npm ci
거할을 node modules
다시 합니다. npm 파일 이름은 다음과 같습니다.
npm prune
또다음사수있다습니도용할을는다있을 사용할 수도 .npm prune
패키지 내부에 정의되지 않은 node_proxy 폴더 내에 설치된 외부 패키지를 제거합니다.제이손
참조:
나는 이것을 내 소포 안에서 했습니다.제이손
"scripts": {
"clean": "rm -rf ./node_modules package-lock.json .cache dist && npm i",
}
언급URL : https://stackoverflow.com/questions/11351784/how-do-i-do-a-clean-install-delete-node-modules-and-install-with-npm
'programing' 카테고리의 다른 글
표에서 헤더 이름 및 행 번호로 Excel 셀 참조 (0) | 2023.06.06 |
---|---|
각 고유 값에 대한 발생 횟수 (0) | 2023.06.06 |
SQL, Postgres OIDs, 그것들은 무엇이고 왜 유용합니까? (0) | 2023.06.01 |
로컬 변경 사항이 있더라도 git push에 "모든 것이 최신"으로 표시됩니다. (0) | 2023.06.01 |
메인 스레드에서 작업을 수행하기 위한 GCD (0) | 2023.06.01 |