npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-grid-preset

v0.1.18

Published

Create React App을 typescript로 설치해서, 해당 npm 모듈을 사용하도록 한다.

Downloads

20

Readme

사용 목적: react-grid-layout을 활용한 gridSystem을 쉽게 적용하기 위함.

0. 사용전 전처리 사항

Create React App을 typescript로 설치해서, 해당 npm 모듈을 사용하도록 한다.

#> npx create-react-app my-app --template typescript

1.1. package.json 설정

아래 내용은 npm에 publishing하는걸 주 목표로한 설정 값이다.

note: name에 @이 있는 경우는 third-party를 의미하는데, @을 사용하고자 하는 경우엔 private repository에서 git이 관리되어야 한다. @이 없을 경우엔 일반적으로 npmjs.org에 publish하게 된다.

{
	"name": "react-grid-preset", //유일한 npm module명을 입력해야 함.
	"version": "0.1.4", //npm에 publish할때마다 버전이 달라야 함.
	"files": ["react"], //npm에 publish할 대상 directory를 지정함.
	"module": "react/index.js", //bundling할 경로/파일명을 지정함.
	"types": "react/ReactGridPreset.d.ts", //typescript bundling할 경로/파일명을 지정함.
	...,
	"scripts": {
		...,
		"build": "rollup -c",
		"build:types": "tsc --emitDeclarationOnly",
		...
	},
	...
}

1.2. bundle

해당 npm 모듈은 rollup을 이용해서 bundling한다. 아래 명령어를 실행하면 package.json에 설정된 files 경로 안에 index.js로 bundling된다.

#> npm run build

2.1. tsconfig.json 설정

아래 내용은 npm에 typescript를 publishing하는걸 주 목표로한 설정 값이다.

note: 아래 주석에 달린 내용과 같이 allowJs/isolatedModules/noEmit은 모두 값이 false여야 정상적으로 bundling이 가능하다. npm/yarn start를 하는 경우, isolatedModules/noEmit의 값이 true로 자동 변경되므로 이에 유의하자.

{
	"compilerOptions": {
		...,
		"declarationDir": "react/",
		"allowJs": false, //지우거나 값을 false로 지정해야 함.
		"isolatedModules": false, //지우거나 값을 false로 지정해야 함.
		"noEmit": false //지우거나 값을 false로 지정해야 함.
	},
	"include": ["src/components/*"]
}

2.2. typescript bundle

해당 npm 모듈은 rollup을 이용해서 bundling한다.

note: 아래 명령어를 실행하면 package.json에 설정된 files 경로 안에 index.d.ts, ReactGridPreset.d.ts로 각각 bundling된다. buldling 대상은 tsconfig.json의 include에 지정되어 있음.

#> npm run build:types

3. project 시작해보기

#> npm start
or
#> yarn start

4. .npmrc

npm을 third-party로 publish하기 위해서는 package.json에 명시된 name과 마찬가지로 private repository를 이용해야 진행이 가능함.

5. npm에 publish하기

  • publish할때 유의점:
  1. package.json에 version을 올린다.
  2. tsconfig.json에 allowJs/isolatedModules/noEmit 각 값을 false로 설정한다.
#> npm publish

5.1. npm publish시 유의사항

note: package.json에 dependencies는 publish할때와 npm start해서 확인할 때 다르게 관리되야 한다. jsonata와 react-grid-layout은 npm module로써 사용될 경우 반드시 필요하다.

5.2. publish할 경우 package.json

...
	"dependencies": {
		"jsonata": "^1.8.4",
		"react-grid-layout": "^1.2.5",
	}
...

5.3. npm start할 경우 package.json

해당 npm module로 publish를 하지 않고 local 테스트를 하기 위한 설정 값으로, 개발자를 제외하고는 아래와 같은 설정은 할 필요없음.

...
	"dependencies": {
		"@testing-library/jest-dom": "^5.11.4",
		"@testing-library/react": "^11.1.0",
		"@testing-library/user-event": "^12.1.10",
		"@types/jest": "^26.0.15",
		"@types/node": "^12.20.13",
		"@types/react": "^17.0.5",
		"@types/react-dom": "^17.0.0",
		"eslint-config-prettier": "^8.3.0",
		"jsonata": "^1.8.4",
		"react": "^17.0.2",
		"react-dom": "^17.0.2",
		"react-grid-layout": "^1.2.5",
		"react-scripts": "4.0.3",
		"typescript": "^4.2.4",
		"web-vitals": "^1.0.1"
	}
...

6. npm module에서 install하기

#> npm install react-grid-preset

7. 컴포넌트 사용시 유의사항

import ReactGridPreset, { printLayouts } from "react-grid-preset";

...
printLayouts("reactGridPreset1"); //layouts의 구조를 미리 console.log로 확인할 수 있다. parameter를 true로 넘길 경우, JSON.stringify된 값으로 확인 가능함.

<ReactGridPreset storagePresetName="reactGridPreset1" dynamicComponentName={name} defaultLayouts={layouts}>
	<ComponentA name="ComponentA">
	...
</ReactGridPreset>
...

7.1. ReactGridPreset

note: defaultLayouts에 설정될 값의 구조는 printLayouts()로 쉽게 확인할 수 있다.

| props | 의미 | 값(type) | | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -------- | | storagePresetName | localStorage에서 관리될 preset의 name을 입력한다.ReactGridPreset을 다중으로 사용하기 위해 추가된 값.기본값: "reactGridPreset" | string | | dynamicComponentName | 동적으로 추가될 컴포넌트 이름을 입력한다.동적 컴포넌트 추가 기능이 필요하지 않으면 입력하지 않아도 됨.기본값: "" | string | | defaultLayouts | 컴포넌트가 바로 layouts 구조를 가지고 rendering되도록 기본 값을 설정한다. | json |

7.2. Components(children)

| props | 의미 | 값(type) | | ----- | ------------------------------------------------------------------------------------------------------------------------------ | -------- | | name | children으로 입력되는 컴포넌트를 동적으로 관리하기 위해 컴포넌트명을 props로 입력받는다. 해당 컴포넌트를 이름으로 사용하면 됨. | string |