package.json의 'main' 파라미터를 사용하는 방법
난 이미 꽤 많이 찾아봤어.그러나 패키지의 '메인' 파라미터에 대해서는 여전히 의문이 있습니다.노드 프로젝트의 json.
- 이 필드에 기입하는 것이 도움이 될까요?다른 방법으로 질문합니다만, 이 필드가 나타나면 다른 스타일로 모듈을 시작할 수 있습니까?
- 메인 파라미터에 여러 스크립트를 입력할 수 있습니까?그렇다면 두 개의 스레드로 시작됩니까?아니오인 경우 모듈에서 2개의 스크립트를 실행하여 병렬로 실행하려면 어떻게 해야 합니까?
두 번째 질문이 상당히 이상하다는 것을 알고 있습니다.OpenShift에서 Node.js 응용 프로그램을 호스팅했지만 응용 프로그램은 두 가지 주요 구성 요소로 구성되어 있기 때문입니다.하나는 REST API이고 다른 하나는 알림 전달 서비스입니다.
REST API를 단일 스레드로 구현하면 알림 전달 프로세스가 차단될 수 있습니다.다만, 같은 MongoDB 카트리지에 접속할 필요가 있습니다.또한 가능하다면 두 부품이 같은 기어로 기능할 수 있다면 한쪽 기어를 절약하고 싶습니다.
어떤 제안이라도 환영합니다.
메인 필드는 프로그램의 주요 입력점인 모듈 ID입니다.즉, 패키지의 이름이 foo이고 사용자가 패키지를 설치한 후 필요한 경우("foo") 메인 모듈의 내보내기 개체가 반환됩니다.
패키지 폴더의 루트에 상대적인 모듈 ID여야 합니다.
대부분의 모듈에서는 메인스크립트가 있는 것이 가장 타당하지만 그 외에는 거의 없습니다.
간단히 말하면:
- need need 만 있으면 됩니다.
main
(파라미터)를합니다.package.json
의 가 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★index.js
folder root root folder.를 들어, 사람들은 을 예, 람, 람, 람, 람, 람에 둡니다.lib/index.js
★★★★★★★★★★★★★★★★★」lib/<packagename>.js
, 하는 스크립트는 「알겠습니다」라고 가 있습니다main
package.json
. - 개의 을 2개의 대본으로 수는 요.
main
포인트 「」의require('yourpackagename')
명확하게 정의해야 합니다.
첫 번째 질문에 답하려면 모듈을 로드하는 방법은 모듈 진입점과 package.json의 주요 파라미터에 따라 달라집니다.
예를 들어 다음과 같은 파일 구조가 있다고 가정합니다.
my-npm-module
|-- lib
| |-- module.js
|-- package.json
패키지에 기본 매개 변수가 없습니다.json, 모듈 진입점을 지정하여 모듈을 로드해야 합니다.require('my-npm-module/lib/module.js')
.
패키지를 설정했을 경우.json 주 파라미터는 다음과 같습니다."main": "lib/module.js"
은 다음과 같이 로드할 수 있습니다.require('my-npm-module')
.
, 「 」에는, 「 」package.json
삭제:
{
"name": "zig-zag",
"main": "lib/entry.js",
...
}
lib/entry.js
패키지의 주요 진입점이 됩니다.
전화할 때
require('zig-zag');
내 (')lib/entry.js
이치노
제가 알기로는 npm용 노드 패키지(라이브러리)의 메인 엔트리 포인트입니다.npm 프로젝트가 다른 사용자가 npm을 통해 설치할 수 있는 노드 패키지(라이브러리)가 되었을 때 필요합니다.
build/, dist/ 또는 lib/ 폴더가 있는 라이브러리가 있다고 가정합니다.이 폴더에는 라이브러리에 대해 다음과 같은 컴파일된 파일이 있습니다.
-lib/
--bundle.js
그럼 소포에 넣어주세요.json은 npm에게 라이브러리(노드 패키지)에 액세스하는 방법을 알려줍니다.
{
"name": "my-library-name",
"main": "lib/bundle.js",
...
}
npm을 사용하여 노드 패키지를 JS 프로젝트에 설치한 후 번들 번들.js 파일에서 기능을 가져올 수 있습니다.
import { add, subtract } from 'my-library-name';
이것은 라이브러리에 코드 분할(예: 웹 팩)을 사용하는 경우에도 해당됩니다.예를 들어 이 webpack.config.js는 프로젝트를 하나의 번들이 아닌 여러 번들로 분할하는 코드를 사용합니다.
module.exports = {
entry: {
main: './src/index.js',
add: './src/add.js',
subtract: './src/subtract.js',
},
output: {
path: `${__dirname}/lib`,
filename: '[name].js',
library: 'my-library-name',
libraryTarget: 'umd',
},
...
}
다만, 패키지에 라이브러리의 주요 엔트리 포인트를 1개 정의합니다.json:
{
"name": "my-library-name",
"main": "lib/main.js",
...
}
그런 다음 라이브러리를 사용할 때 주 진입점에서 파일을 가져올 수 있습니다.
import { add, subtract } from 'my-library-name';
그러나 패키지에서 주 진입점을 우회할 수도 있습니다.json 및 코드 분할 번들을 가져옵니다.
import add from 'my-library-name/lib/add';
import subtract from 'my-library-name/lib/subtract';
결국, 당신의 패키지의 주요 재산입니다.json은 라이브러리의 주요 진입점 파일만 가리킵니다.
의 중 main
중요한 것은 진입점의 경로를 제공한다는 것입니다. '아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, nodemon
을 사용하여 작업하는 경우nodemon
'보다 낫다'를 하고,main
package.json
그대로"main": "./src/server/app.js"
서버 nodemon
root를 pwd로 지정한 CLI에서 nodemon ./src/server/app.js
.
Node.js 시작 매뉴얼에는 다음과 같이 기재되어 있습니다.
추가 사항: 필요한 파일 이름이 실제로 디렉토리일 경우 먼저 패키지를 찾습니다.디렉토리에서 json을 입력하고 메인 속성에서 참조되는 파일을 로드합니다.그렇지 않으면 index.js를 찾습니다.
OpenShift의 경우 바인딩할 수 있는 PORT 및 IP 쌍은 애플리케이션당 1개뿐입니다.각 서비스 엔드포인트의 내부 루트를 추가하여 단일 nodejs 인스턴스에서 두 서비스를 모두 제공할 수 있어야 합니다.
OpenShift가 귀사의 프로젝트 패키지를 어떻게 사용하는지에 대한 정보가 있습니다.어플리케이션을 시작하려면http://https://www.openshift.com/blogs/run-your-nodejs-projects-on-openshift-in-two-simple-steps#package_json 를 참조해 주세요.
그것을 「시작점」이라고 생각해 주세요.
오브젝트 지향 프로그래밍의 의미에서 예를 들어 C#은 오브젝트 클래스의 init() 또는 컨스트럭터이며, 이것이 "엔트리 포인트"의 의미입니다.
예를들면
public class IamMain // when export and require this guy
{
public IamMain() // this is "main"
{...}
... // many others such as function, properties, etc.
}
언급URL : https://stackoverflow.com/questions/22512992/how-to-use-the-main-parameter-in-package-json
'programing' 카테고리의 다른 글
PIL을 사용하여 이미지 크기를 조정하고 가로 세로 비율을 유지하는 방법은 무엇입니까? (0) | 2022.09.28 |
---|---|
vCruntime140.dll 14.0은 PHP 빌드와 호환되지 않습니다. (0) | 2022.09.28 |
MySQL/MariaDB에서 두 개의 큰 테이블을 결합하는 방법 (0) | 2022.09.28 |
Java에서 문자열의 최대 길이 - 호출 길이() 메서드 (0) | 2022.09.28 |
MySQL 데이터베이스의 모든 트리거를 나열하려면 어떻게 해야 합니까? (0) | 2022.09.28 |