배포 파일과 함께 npm 패키지를 게시하는 방법은 무엇입니까? 게시됩니다. 내 package.json은 다음과 같습니다. { “name”:

내 소스와 배포 파일이 포함 된 npm 패키지를 게시하고 싶습니다. 내 Github 저장소에는src JavaScript 소스 파일이 폴더가 있습니다. 빌드 프로세스 dist는 배포 파일이 포함 된 폴더를 생성 합니다. 물론 dist폴더는 Github 저장소에 체크인되지 않습니다.

누군가가했을 때 폴더 도 npm install가져 오는 방식으로 npm 패키지를 어떻게 게시 합니까? 현재 내가 달릴 때srcdistnpm publish git 저장소에서src 폴더 만 게시됩니다.

내 package.json은 다음과 같습니다.

{
  "name": "join-js",
  "version": "0.0.1",
  "homepage": "https://github.com/archfirst/joinjs",
  "repository": {
    "type": "git",
    "url": "https://github.com/archfirst/joinjs.git"
  },
  "main": "dist/index.js",
  "scripts": {
    "test": "gulp",
    "build": "gulp build",
    "prepublish": "npm run build"
  },
  "dependencies": {
    ...
  },
  "devDependencies": {
    ...
  }
}


답변

package.json 파일 https://docs.npmjs.com/files/package.json#files 의 “files”필드를 살펴보십시오.

문서에서 :

“파일”필드는 프로젝트에 포함 할 파일의 배열입니다. 어레이의 폴더 이름을 지정하면 해당 폴더 내의 파일도 포함됩니다. (다른 규칙에 의해 무시되지 않는 한)


답변

당신이 때 npm publish당신이하지 않은 경우, .npmignore파일을, NPM이 사용하는 .gitignore파일을 (귀하의 경우에는 제외 된 dist폴더).

문제를 해결하기 위해 만들어 .npmignore당신을 기반으로 파일 .gitignore, 파일을 dist 파일 폴더를 무시하지 않고 .

소스 : https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package


답변

스크립트에서 데이터 파일을 사용하는 방법의 최소 예

또 다른 일반적인 사용 사례는 스크립트에서 사용해야하는 데이터 파일을 보유하는 것입니다.

이 작업은 다음에 언급 된 기술을 사용하여 쉽게 수행 할 수 있습니다 . node.JS 에서 로드 한 모듈의 경로를 어떻게 얻을 수 있습니까? require를 통해로드 한 모듈이 * 내가 아닙니다 * (즉 일부 node_module에서)

전체 예는 다음에서 찾을 수 있습니다.

이 설정으로, 파일 mydata.txt에 넣어 도착 node_modules/cirosantilli-data-files/mydata.txt우리는 우리에 추가하기 때문에 설치 후 files:의 항목 package.json.

myfunc그런 다음 함수 는 해당 파일을 찾고 require.resolve. ./cirosantilli-data-files물론 실행 파일에서만 작동합니다 .

package.json

{
  "bin": {
    "cirosantilli-data-files": "cirosantilli-data-files"
  },
  "license": "MIT",
  "files":  [
    "cirosantilli-data-files",
    "mydata.txt",
    "index.js"
  ],
  "name": "cirosantilli-data-files",
  "repository": "cirosantilli/linux-kernel-module-cheat",
  "version": "0.1.0"
}

mydata.txt

hello world

index.js

const fs = require('fs');
const path = require('path');

function myfunc() {
  const package_path = path.dirname(require.resolve(
    path.join('cirosantilli-data-files', 'package.json')));
  return fs.readFileSync(path.join(package_path, 'mydata.txt'), 'utf-8');
}
exports.myfunc = myfunc;

cirosantilli-data-files

#!/usr/bin/env node
const cirosantilli_data_files = require('cirosantilli-data-files');
console.log(cirosantilli_data_files.myfunc());

is-installed-globally패키지는 로컬 또는 글로벌 설치 여부에 따라 분산 파일에 대한 상대 경로를 생성하려는 경우 유용합니다. npm 패키지가 글로벌 또는 로컬로 설치되었는지 확인하는 방법