ES6로 작성된 모듈을 NPM에 게시하는 방법은 무엇입니까?


144

ES6에서 모듈을 다시 작성하고 미래를 보장하고 ES6을 배우기 위해 NPM에 모듈을 게시하려고했습니다. 나는 Babel을 사용하여 ES5로 변환하고 테스트를 실행했습니다. 그러나 진행 방법을 잘 모르겠습니다.

  1. 결과 / out 폴더를 변환하고 NPM에 게시합니까?
  2. Github 저장소에 결과 폴더를 포함합니까?
  3. 아니면 Github의 ES6 코드 + 꿀꺽 거리는 스크립트와 NPM에 대한 변환 된 결과 + 테스트가있는 2 개의 저장소를 유지합니까?

한마디로 : ES6로 작성된 모듈을 NPM에 게시하고 사람들이 원래 코드를 탐색 / 포크 할 수 있도록하려면 어떤 단계를 수행해야합니까?


나는 최근에이 결정에 어려움을 겪고있다. José 가 합의한 답변으로 귀하가 정답으로 표시 한 것을보고 있습니다.
— talves

다음은 2015 년 이후 모듈 지원의 진행 상황을 고려한 2018 년 답변입니다 .
— Dan Dascalescu

1
내가 반대로 할 수 있으면 좋겠어. ESPM을 사용하여 NPM 모듈을 가져 오지만 이것이 내가 얻는 유일한 결과입니다.
— SeanMC

답변:


81

지금까지 본 패턴은 es6 파일을 src디렉토리 에 유지하고 npm의 사전 게시 디렉토리에 물건을 빌드하는 것입니다 lib.

.gitignore와 유사하지만 src대신 무시하는 .npmignore 파일이 필요합니다 lib.


4
예제 저장소가 있습니까?
— Ahmed Abbas

2
@JamesAkwuh babel-cli의 상대 경로를 사용하도록 package.json에서 "start"및 "build"명령을 변경하려고 할 수 있습니다 ./node_modules/babel-cli/bin/babel.js -s inline -d lib -w src. 이를 통해 새 환경에 배포 할 때 설치가 실패하지 않도록해야합니다.
— phazonNinja

2
@phazonNinja npm이 처리합니다
— James Akwuh

4
".npmignore 파일이 없지만 .gitignore 파일이 있으면 npm은 .gitignore 파일과 일치하는 항목을 무시합니다." 공식 npm 문서
— Frank Nocke

10
대신 package.json.npmignore 의 files필드를 사용할 수 있습니다 . 게시 하지 않으려 는 임의의 파일을 찾는 대신 게시하려는 파일을 정확하게 지정할 수 있습니다 .
— Dan Dascalescu

76

나는 José의 답변을 좋아한다. 여러 모듈이 이미 해당 패턴을 따르는 것으로 나타났습니다. Babel6으로 쉽게 구현하는 방법은 다음과 같습니다. babel-cli로컬 babel 버전을 변경해도 빌드가 중단되지 않도록 로컬로 설치 합니다.

.npmignore

/src/

.gitignore

/lib/
/node_modules/

바벨 설치

npm install --save-dev babel-core babel-cli babel-preset-es2015

package.json

{
  "main": "lib/index.js",
  "scripts": {
    "prepublish": "babel src --out-dir lib"
  },
  "babel": {
    "presets": ["es2015"]
  }
}

29
의 모든 명령 scripts이 node_modules/.bin추가되었으며 바이너리를 설치 한 $PATH이후 경로로 명령을 참조 할 필요가 없습니다. babel-clinode_modules/.bin/babel
— Sukima

3
통지하십시오 prepublish이 시간 (설치시 실행할 수 있기 때문에 문제가 github.com/npm/npm/issues/3059는 ) 더 관용적 선호하는 version스크립트 후크 ( docs.npmjs.com/cli/version )
— mattecapu

@ mattecapu 그것은 prepublish여전히 문제가있는 것 같습니다 . 지금은 src디렉토리를 수동으로 컴파일 npm publish하는 방법 이라고 생각 합니다.
— sonlexqt 2012

1
prepublishOnly스크립트 후크 를 사용할 수 있습니다 ( docs.npmjs.com/misc/scripts#prepublish-and-prepare 참조 ). npm 버전 5에서는 예상대로 작동하지만 지금은 npm v4 이상을 사용한다고 가정하면 작동합니다.
— Alex Mann

1
@FrankNocke prepublish는 이전 publish(obv.)에서 실행 되어 npm (또는 구성하는 곳)으로 물건을 푸시합니다. 체크인하지 않아도 NPM 패키지에 포함 된 내용을 빌드하기위한 것입니다.
— Simon Buchan

42

TL; DR -2019 년 10 월까지는하지 마십시오. Node.js 모듈 팀 은 다음과 같이 요청했습니다 .

[2019 년 10 월]까지 Node.js에서 사용하도록 의도 된 ES 모듈 패키지를 게시하지 마십시오

2019 년 5 월 업데이트

이 질문이 제기 된 2015 년 이래 모듈에 대한 JavaScript 지원이 크게 발전했으며 2019 년 10 월 공식적으로 안정적으로 유지 될 것입니다. 다른 모든 답변은 이제 더 이상 사용되지 않거나 지나치게 복잡합니다. 현재 상황과 모범 사례는 다음과 같습니다.

ES6 지원

ES6 (일명 2015)의 99 %가 버전 6 이후 Node에서 지원되었습니다 . 현재 버전의 Node는 12입니다. 모든 Evergreen 브라우저는 대다수의 ES6 기능을 지원합니다. ECMAScript는 현재 2019 버전 이며 버전 체계는 이제 수년을 선호합니다.

브라우저의 ES 모듈 (일명 ECMAScript 모듈)

모든 상록 브라우저 된 지원 import 2017 년부터 -ing ES6 모듈을 동적 수입이 되는 지원 크롬에서 사파리 (오페라와 삼성 인터넷과 같은 + 포크). Firefox 지원은 다음 버전 인 67로 예정되어 있습니다.

더 이상 모듈을로드하기 위해 Webpack / rollup / Parcel 등이 필요 하지 않습니다 . 그것들은 다른 목적으로 여전히 유용 할 수 있지만 코드를로드 할 필요는 없습니다. ES 모듈 코드를 가리키는 URL을 직접 가져올 수 있습니다.

노드의 ES 모듈

ES 모듈 ( /가있는 .mjs파일 )은 플래그 로 호출 하여 Node v8.5.0부터 지원되었습니다 . 2019 년 4 월에 릴리스 된 Node v12는 실험 모듈 지원을 다시 작성했습니다. 가장 눈에 띄는 변경 사항은 가져올 때 파일 확장자를 기본적으로 지정해야한다는 것입니다.importexportnode--experimental-modules

// lib.mjs 

export const hello = 'Hello world!';

// index.mjs:

import { hello } from './lib.mjs';
console.log(hello);

.mjs전체적으로 필수 확장을 참고하십시오 . 다음으로 실행 :

node --experimental-modules index.mjs

Node 12 릴리스는 모듈 팀 이 개발자에게 와 를 통해 패키지를 사용하는 솔루션을 찾을 때까지 Node.js에서 사용할 ES 모듈 패키지를 게시하지 않도록 요청한 경우 입니다. 브라우저 용 네이티브 ES 모듈을 계속 게시 할 수 있습니다.require('pkg')import 'pkg'

기본 ES 모듈의 생태계 지원

2019 년 5 월 현재 ES 모듈에 대한 에코 시스템 지원이 미숙합니다. 예를 들어 Jest 및 Ava 와 같은 테스트 프레임 워크 는을 지원하지 않습니다 --experimental-modules. 트랜스 파일러를 사용해야하고 이름이 지정된 import ( import { symbol }) 구문 (대부분의 npm 패키지에서는 아직 작동하지 않음)과 기본 import 구문 ( import Package from 'package') 중 작동하지만 Babel이 구문 분석 할 때는 사용하지 않아야합니다. 대한 패키지 타이프로 작성 (graphql-도구, 노드 유입, FAAST 등)을 모두 작동하는 해결 방법 그러나이 --experimental-modules와 바벨 코드를 transpiles 경우에 당신이 농담 / 아바 / 모카 등로를 테스트 할 수 있도록이 :

import * as ApolloServerM from 'apollo-server'; const ApolloServer = ApolloServerM.default || ApolloServerM;

아마도 추악하지만,이 방법으로 import/를 사용 하여 자체 ES 모듈 코드를 작성하고 코드 변환기없이 코드를 export실행할 수 node --experimental-modules있습니다. 아직 ESM을 지원하지 않는 종속성이있는 경우 위와 같이 가져 오면 Babel을 통해 테스트 프레임 워크 및 기타 툴링을 사용할 수 있습니다.


질문에 대한 이전 답변-Node가 2019 년 10 월 경에 require / import 문제를 해결할 때까지이 작업을 수행하지 마십시오.

이전 버전과의 호환성으로 ES6 모듈을 npm에 게시

이 바벨 또는 다른 transpilers하지 않고 직접 수입 할 수 있도록 npmjs.org에 ES 모듈을 게시하려면 포인트 main당신의 필드를 package.json받는 .mjs파일 만 확장자를 생략 :

{
  "name": "mjs-example",
  "main": "index"
}

그게 유일한 변화입니다. 확장을 생략하면 --experimental-modules와 함께 실행되는 경우 Node는 먼저 mjs 파일을 찾습니다. 그렇지 않으면 .js 파일로 대체 되므로 이전 노드 버전을 지원 하는 기존 변환 프로세스 가 이전과 같이 작동합니다. Babel이 .mjs파일 을 가리 키도록하십시오 .

다음은 NPM에 게시 한 Node <8.5.0과 호환되는 기본 ES 모듈 의 소스입니다 . 바벨이나 다른 어떤 것도없이 바로 사용할 수 있습니다.

모듈을 설치하십시오 :

npm install local-iso-dt
# or, yarn add local-iso-dt

테스트 파일 test.mjs를 작성하십시오 .

import { localISOdt } from 'local-iso-dt/index.mjs';
console.log(localISOdt(), 'Starting job...');

--experimental-modules 플래그를 사용하여 노드 (v8.5.0 +)를 실행하십시오.

node --experimental-modules test.mjs

TypeScript

TypeScript로 개발하는 경우 ES6 코드를 생성하고 ES6 모듈을 사용할 수 있습니다.

tsc index.js --target es6 --modules es2015

그런 다음 *.js출력 이름을로 바꾸어야 합니다 .mjs. 알려진 문제 는 곧 해결 될 것이므로 파일을 직접 tsc출력 할 수 .mjs있습니다.


3
"모든 상록 브라우저는 대부분의 ES6 기능을 지원합니다." 데이터 를보고 브라우저에서 es6 지원이 모든 사용자의 약 80 %에 도달한다는 사실을 인식 하지는 않습니다 .
— Pedro Pedrosa

3
현재 생태계는 이것으로 충분히 성숙하지 못합니다. v12 릴리스의 Node.js 팀은 구체적으로 다음과 같이 질문했습니다. "이 문제가 해결 될 때까지 Node.js에서 사용할 ES 모듈 패키지를 게시하지 마십시오." 2ality.com/2019/04/nodejs-esm-impl.html#es-modules-on-npm Mocha는 기본적으로 .mjs 파일을 지원하지 않습니다. 많은 라이브러리 (예 : create-react-app, react-apollo, graphql-js)에는 mjs파일을 포함하는 종속성에 문제가있었습니다 . Node.js는 2019 년 10 월에 공식 지원을 제공 할 계획입니다.
— thisismydesign

3
@thisismydesign :이 오래된 답변을 업데이트하도록 상기시켜 주셔서 감사합니다! 방금 했어
— Dan Dascalescu

17

@Jose가 맞습니다. ES6 / ES2015를 NPM에 게시하는 데 아무런 문제가 없지만 특히 패키지를 사용하는 사람이 Webpack을 사용하는 경우 문제가 발생할 수 있습니다. 예를 들어 일반적으로 사람들 은 성능상의 이유로 node_modules전처리하는 동안 폴더를 무시하기 babel때문입니다.

그래서, 그냥 사용 gulp, grunt구축 단순히 Node.js를하거나 libES5입니다 폴더에 있습니다.

여기에 build-lib.js내가 보관하는 스크립트가 있습니다 ./tools/(아니오 gulp또는 grunt여기).

var rimraf = require('rimraf-promise');
var colors = require('colors');
var exec = require('child-process-promise').exec;

console.log('building lib'.green);

rimraf('./lib')
    .then(function (error) {
        let babelCli = 'babel --optional es7.objectRestSpread ./src --out-dir ./lib';
        return exec(babelCli).fail(function (error) {
            console.log(colors.red(error))
        });
    }).then(() => console.log('lib built'.green));

마지막 조언은 다음과 같습니다 . 프로젝트에 .npmignore를 추가해야합니다 . 경우 npm publish이 파일을 찾을 수없는, 그것은 사용 .gitignore일반적으로 당신 때문에 당신에게 문제를 일으킬 것이다, 대신 .gitignore파일이 제외됩니다 ./lib및 포함 ./src정확히 NPM에 게시 할 때 당신이 원하는 것을 반대이다. .npmignore파일은 기본적으로 동일한 구문은 .gitignore(AFAIK를).


1
대신 package.json.npmignore 의 files필드를 사용할 수 있습니다 . 게시 하지 않으려 는 임의의 파일을 찾는 대신 게시하려는 파일을 정확하게 지정할 수 있습니다 .
— Dan Dascalescu

이 나무를 흔드는 게 아닌가?
— Joe

내가 사용하지 않는 것이 좋습니다 .npmignore시도 package.json의 files대신에, 참조 : github.com/c-hive/guides/blob/master/js/...
— thisismydesign

@thisismydesign : 위의 의견에서 내가 추천 한 것과 정확히 일치합니다 ..?
— Dan Dascalescu

내 나쁜, 통지하지 않았다 :)
— thisismydesign

8

José와 Marius의 접근 방식에 따라 (2019 년 Babel의 최신 버전 업데이트) : 최신 JavaScript 파일을 src 디렉토리에 보관하고 npm의 prepublish스크립트를 사용하여 빌드 하고 lib 디렉토리로 출력하십시오.

.npmignore

/src

.gitignore

/lib
/node_modules

Babel 설치 (필자의 경우 버전 7.5.5)

$ npm install @babel/core @babel/cli @babel/preset-env --save-dev

package.json

{
  "name": "latest-js-to-npm",
  "version": "1.0.0",
  "description": "Keep the latest JavaScript files in a src directory and build with npm's prepublish script and output to the lib directory.",
  "main": "lib/index.js",
  "scripts": {
    "prepublish": "babel src -d lib"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/cli": "^7.5.5",
    "@babel/core": "^7.5.5",
    "@babel/preset-env": "^7.5.5"
  },
  "babel": {
    "presets": [
      "@babel/preset-env"
    ]
  }
}

그리고 src/index.js화살표 기능을 사용하는 것이 있습니다.

"use strict";

let NewOneWithParameters = (a, b) => {
  console.log(a + b); // 30
};
NewOneWithParameters(10, 20);

여기 GitHub의 저장소가 있습니다 .

이제 패키지를 게시 할 수 있습니다 :

$ npm publish
...
> latest-js-to-npm@1.0.0 prepublish .
> babel src -d lib

Successfully compiled 1 file with Babel.
...

패키지가 npm에 게시되기 전에 lib/index.js생성되어 es5로 변환 된 것을 볼 수 있습니다.

"use strict";

var NewOneWithParameters = function NewOneWithParameters(a, b) {
  console.log(a + b); // 30
};

NewOneWithParameters(10, 20);

[롤업 번 들러 업데이트]

@kyw의 요청에 따라 롤업 번 들러를 어떻게 통합 하시겠습니까?

먼저 설치 rollup하고rollup-plugin-babel

npm install -D rollup rollup-plugin-babel

둘째, rollup.config.js프로젝트 루트 디렉토리에서 생성

import babel from "rollup-plugin-babel";

export default {
  input: "./src/index.js",
  output: {
    file: "./lib/index.js",
    format: "cjs",
    name: "bundle"
  },
  plugins: [
    babel({
      exclude: "node_modules/**"
    })
  ]
};

마지막으로, 업데이트 prepublish에package.json

{
  ...
  "scripts": {
    "prepublish": "rollup -c"
  },
  ...
}

이제 npm publish패키지를 npm에 게시하기 전에 lib / index.js가 생성되어 es5로 변환 된 것을 확인할 수 있습니다.

'use strict';

var NewOneWithParameters = function NewOneWithParameters(a, b) {
  console.log(a + b); // 30
};

NewOneWithParameters(10, 20);

참고 : @babel/cli롤업 번 들러를 사용중인 경우 더 이상 필요하지 않습니다 . 안전하게 제거 할 수 있습니다.

npm uninstall @babel/cli

롤업 번 들러를 어떻게 통합 하시겠습니까?
— kyw

1
롤업 번 들러를 통합하는 방법에 대한 @kyw는 업데이트 된 답변을 참조하십시오.
— Yuci

2019 년 12 월 업데이트-> github.com/rollup/rollup/blob/…
— a.barbieri

6

매우 간단한 작은 오픈 소스 노드 모듈 에서이 작업을보고 싶다면 n 번째 날 (내가 시작한 다른 기여자)을 살펴보십시오 . package.json 파일과 prepublish 단계에서이를 수행하는 위치와 방법을 찾으십시오. 해당 모듈을 복제하면 로컬로 실행하여 템플릿을 템플릿으로 사용할 수 있습니다.


4

Node.js 13.2.0+는 실험용 플래그없이 ESM을 지원하며 하이브리드 (ESM 및 CommonJS) NPM 패키지를 게시하는 몇 가지 옵션이 있습니다 (필요한 이전 버전과의 호환성 수준에 따라 다름) : https://2ality.com/2019 /10/hybrid-npm-packages.html

패키지를보다 쉽게 ​​사용할 수 있도록 이전 버전과 완전히 호환되는 것이 좋습니다. 이것은 다음과 같이 보일 수 있습니다 :

하이브리드 패키지에는 다음 파일이 있습니다.

mypkg/
  package.json
  esm/
    entry.js
  commonjs/
    package.json
    entry.js

mypkg/package.json

{
  "type": "module",
  "main": "./commonjs/entry.js",
  "exports": {
    "./esm": "./esm/entry.js"
  },
  "module": "./esm/entry.js",
  ···
}

mypkg/commonjs/package.json

{
  "type": "commonjs"
}

CommonJS에서 가져 오기 :

const {x} = require('mypkg');

ESM에서 가져 오기 :

import {x} from 'mypkg/esm';

2019 년 5 월 ESM 지원에 대한 조사를 수행 한 결과 많은 라이브러리에 지원이 부족한 것으로 나타났습니다 (따라서 이전 버전과의 호환성 권장 사항).


전 세계적으로 설치된 ES6 모듈을 node_modules 폴더 (npm root -g에서 제공)로 가져올 수 없습니다. 우리는 실제로 그렇게 할 수 없어야합니까? 정말 혼란 스러워요. 모듈을 로컬 node_modules 폴더에 연결하여 npm 링크가 문제를 해결할 수 있다는 것을 알고 있지만 전역 노드 모듈 가져 오기가 지원되지 않는 이유를 알고 싶습니다.
— Joakim L. Christiansen

나 자신에게 응답, 그것은 결코 지원되지 않을 것 같아요 : github.com/nodejs/node-eps/blob/master/… 정말 바보 같은 결정이지만, 지원하기 쉬울 것입니다 ...
— Joakim L. Christiansen

3

NPM 패키지의 두 가지 기준은 a로만 사용할 수 있으며 require( 'package' )소프트웨어와 같은 역할을한다는 것입니다.

이 두 가지 요구 사항을 충족하면 원하는대로 수행 할 수 있습니다. 모듈이 ES6로 작성된 경우에도 최종 사용자가이를 알 필요가없는 경우 지금 최대한의 지원을 받기 위해 모듈을 변환합니다.

그러나 koa 와 같이 모듈에 ES6 기능을 사용하는 사용자와의 호환성이 필요하면 두 패키지 솔루션이 더 좋습니다.

테이크 아웃

  1. require( 'your-package' )작업에 필요한만큼의 코드 만 게시하십시오 .
  2. ES5와 6 사이가 사용자에게 중요하지 않은 경우, 1 개의 패키지 만 게시하십시오. 필요한 경우 그것을 번역하십시오.

1
이것은 질문에 대답하지 않는 것 같습니다. OP가 Github 리포지토리를 구성하는 방법과 NPM에 게시 할 내용을 파악하려고 노력하고 있으며 원하는 것은 무엇이든 할 수 있다는 것입니다. OP는이 상황에 대한 모범 사례에 대한 특정 권장 사항을 원합니다.
— jfriend00

@ jfriend00 동의하지 않습니다. 나는 그가 파일을 번역 require( 'package' )하고 작업 하는 데 필요한 파일 만 게시하는 것이 좋습니다 . 더 명확하게 답변을 편집하겠습니다. 즉, Jose의 대답은 내 것보다 훨씬 낫습니다.
— JoshWillik

José의 답변은 매우 좋지만 1 대 2 패키지를 언제 / 왜 사용 해야하는지에 대한 좋은 규칙을 명시 적으로 요약 한 것에 감사드립니다.
— Jordan Gray

3

기본 키 package.json는 패키지가 게시되면 패키지의 진입 점을 결정합니다. 따라서 원하는 위치에 바벨의 출력을 넣을 수 있으며 올바른 경로를 언급해야합니다 main.

"main": "./lib/index.js",

다음은 npm 패키지를 게시하는 방법에 대한 잘 작성된 기사입니다.

https://codeburst.io/publish-your-own-npm-package-ff918698d450

다음은 참조 용으로 사용할 수있는 샘플 저장소입니다.

https://github.com/flexdinesh/npm-module-boilerplate


포스트 생략합니다 당신은 (그리고해야) 할 수 있다는 사실 그건 NPM 모듈에 게시는 ES6에서 제작 하고 import직접 바벨이나 다른 transpilers없이 수.
— Dan Dascalescu

0

모듈의 해부에 따라이 솔루션은 작동하지 않을 수 있지만 모듈이 단일 파일 내에 포함되어 있고 종속성 이없는 경우 ( import를 사용하지 않음 ) 다음 패턴을 사용하여 코드를 그대로 해제 할 수 있습니다 가져 오기 (브라우저 ES6 모듈) 로 가져 와서 (노드 CommonJS 모듈)이 필요합니다.

보너스로 SCRIPT HTML 요소를 사용하여 가져 오는 것이 적합합니다.

main.js :

(function(){
    'use strict';
    const myModule = {
        helloWorld : function(){ console.log('Hello World!' )} 
    };

    // if running in NODE export module using NODEJS syntax
    if(typeof module !== 'undefined') module.exports = myModule ;
    // if running in Browser, set as a global variable.
    else window.myModule = myModule ;
})()

my-module.js :

    // import main.js (it will declare your Object in the global scope)
    import './main.js';
    // get a copy of your module object reference
    let _myModule = window.myModule;
    // delete the the reference from the global object
    delete window.myModule;
    // export it!
    export {_myModule as myModule};

package.json :`

    {
        "name" : "my-module", // set module name
        "main": "main.js",  // set entry point
        /* ...other package.json stuff here */
    }

모듈을 사용하기 위해 이제 정규 구문을 사용할 수 있습니다 ...

NODE로 가져올 때 ...

    let myModule = require('my-module');
    myModule.helloWorld();
    // outputs 'Hello World!'

브라우저 에서 가져올 때 ...

    import {myModule} from './my-module.js';
    myModule.helloWorld();
    // outputs 'Hello World!'

또는 HTML 스크립트 요소를 사용하여 포함 된 경우에도 ...

<script src="./main.js"></script>
<script>
     myModule.helloWorld();
    // outputs 'Hello World!'
</script>

-1

게시 된 모듈을 거치지 않고 github에서 직접 자체 모듈을 사용하는 사람을위한 몇 가지 추가 참고 사항 :

( 널리 사용되는 ) "사전 게시"후크는 아무 것도 수행하지 않습니다 .

가장 좋은 방법 (게시물이 아닌 github 저장소에 의존하려는 경우) :

  • 올라가지 src.npmignore에서 (즉 : 그것을 허용). 이없는 경우 다음을 .npmignore기억하십시오. 다음 .gitignore과 같이 설치된 위치에 사본 이 사용됩니다 ls node_modules/yourProject.
  • babel-cli모듈을 사용하는 앱 개발자 컴퓨터에서 소비하는 컴퓨터를 실제로 구축하고 있기 때문에 devDepenceny뿐만 아니라 모듈의 의존성 인지 확인하십시오.
  • 설치 후크 에서 빌드 작업을 수행하십시오 .

    "install": "babel src -d lib -s"

( "사전 설치"를 시도 할 때 부가 가치가 없습니다. 즉 babel-cli가 누락되었을 수 있습니다)


3
설치 컴파일은 매우 무례합니다. 이 작업을 수행하지 마십시오. npm 설치 시간이 충분하지 않습니다! npm 패키지 리포지토리를 사용하지 않으려는 내부 코드의 경우 1) 모노 레포 사용, 2) npm pack출력 업로드 및 출력, 3) 빌드 출력 체크인을 수행 할 수 있습니다.
— Simon Buchan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.