내 소스와 배포 파일이 포함 된 npm 패키지를 게시하고 싶습니다. 내 Github 저장소에는src
JavaScript 소스 파일이 폴더가 있습니다. 빌드 프로세스 dist
는 배포 파일이 포함 된 폴더를 생성 합니다. 물론 dist
폴더는 Github 저장소에 체크인되지 않습니다.
누군가가했을 때 폴더 도 npm install
가져 오는 방식으로 npm 패키지를 어떻게 게시 합니까? 현재 내가 달릴 때src
dist
npm 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에서)
전체 예는 다음에서 찾을 수 있습니다.
- 출처 : https://github.com/cirosantilli/linux-kernel-module-cheat/tree/008bd8000234d74e00845939ea6c47d302a26706/npm/data-files
- 게시 됨 : https://www.npmjs.com/package/cirosantilli-data-files
이 설정으로, 파일 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 패키지가 글로벌 또는 로컬로 설치되었는지 확인하는 방법