반응형

alias import 설정

  • IntelliJ > File > Settings > Languages & Frameworks > JavaScript > Webpack > webpack configuration file: <config/webpack.config.js> 경로 설정 후 저장
// config/webpack.config.js

const path = require('path');

resolve: {
    ...
    alias: {
        '@components': path.resolve(__dirname, '../src/components'),
    }
    ...
}
// src/App.js

import MyComponent from '@components/MyComponent'

Internet Explorer 10 지원 가능하도록 설정

// package.json

"browserslist": [
    ">0.2%",
    "not dead",
    "not op_mini all",
    "ie >= 10",
    "last 1 chrome version",
    "last 1 firefox version",
    "last 1 safari version"
],
// webpack.config.js

entry: [
    ...,
    'react-app-polyfill/ie9',
    'react-app-polyfill/stable',

    // webpack-dev-server로 띄울 경우 IE 10에서 작동 불가
    // 아래 구분을 지우면 hot reload를 사용할 수 없지만 IE 10에서도 webpack-dev-server 사용 가능
    // isEnvDevelopment && require.resolve('react-dev-utils/webpackHotDevClient'),
    
    paths.appIndexJs,
    ...
]
# yarn.lock 파일 제거 후 모듈 재설치
yarn install

커맨드 라인으로 파라미터 전달해서 사용하기

# 모듈 추가
yarn add cross-env
# 커맨드 라인으로 파라미터 전달 (PHASE=local)
cross-env PHASE=local node scripts/start.js
// PHASE 값 사용

const phase = process.env.PHASE
console.log(phase);

global props 설정

// <프로젝트>/src/props/default.json

{
  "app.name": "my-app",
  "app.description": "test example"
}
// <프로젝트>/src/props/local.json

{
  "phase": "local",
  "url": "http://local.example.com"
}
// <프로젝트>/config/props.js

const propsFiles = ['default.json', `${process.env.PHASE}.json`];

const result = propsFiles.reduce((result, propsFile) => {
    try {
        const json = require(`../src/props/${propsFile}`);
        const props = Object.entries(json).reduce((result, [key, value]) => {
            result[key] = JSON.stringify(value);
            return result;
        }, {});

        result = { ...result, ...props };
    } catch (e) {}
    return result;
}, {});

module.exports = {
    'global.props': result,
};
// <프로젝트>/config/webpack.config.js

const props = require('./props');
...
plugins: [
    ...
    new webpack.DefinePlugin(props),
    ...
]
# 실행
cross-env PHASE=local node scripts/start.js
// global.props 사용
const appName = global.props.app.name;
const url = global.props.url;
반응형

'Development > React' 카테고리의 다른 글

[React] react-testing-library  (0) 2019.12.29
[React] Enzyme  (0) 2019.12.28
[React] ETC  (0) 2019.08.29
[React] setupProxy  (0) 2019.05.29
[React] material-ui  (0) 2019.05.28

+ Recent posts