두 손끝의 창조자

package.lock.js로부터 package.js 만들기 본문

프로그래밍언어/Javascript

package.lock.js로부터 package.js 만들기

codinglog 2024. 7. 15. 15:29

샘플 코드를 받았는데 package.js는 없고 package.lock.js 파일만 있으면 npm install 이 안된다.
package.lock.js에는 package.js가 가지고 있는 정보를 일정부분 보함하고 있으니 코드로 복원하자.

const fs = require('fs');

const lockFile = 'package-lock.json';
const packageFile = 'package.json';

fs.readFile(lockFile, (err, data) => {
  if (err) throw err;

  const lockJson = JSON.parse(data);
  const packageJson = {
    name: lockJson.name || 'example-project',
    version: lockJson.version || '1.0.0',
    description: '',
    main: 'index.js',
    scripts: {
      test: 'echo "Error: no test specified" && exit 1'
    },
    author: '',
    license: 'ISC',
    dependencies: {},
    devDependencies: {}
  };

  for (const [key, value] of Object.entries(lockJson.dependencies)) {
    if (value.dev) {
      packageJson.devDependencies[key] = value.version;
    } else {
      packageJson.dependencies[key] = value.version;
    }
  }

  fs.writeFile(packageFile, JSON.stringify(packageJson, null, 2), (err) => {
    if (err) throw err;
    console.log('package.json has been created');
  });
});
반응형
Comments