2.13.6
npm 7, "antd": "^2.13.6",
1. ๋ฐ์ ์ฑ ๊บผ๋ด๊ธฐ ๋ง๋ค๊ธฐ,
๋น๋ ์ฑ๊ณต!
๋ชจ๋ ๋น๋ ์คํจ:
// https://github.com/ant-design/ant-motion/issues/44
.bezierEasingMixin();
^^
์ธ๋ผ์ธ JavaScript๊ฐ ํ์ฑํ๋์ง ์์์ต๋๋ค. ์ต์
์ ์ค์ ๋์ด ์๋์?
/Users/MacBook/Documents/2017/react-admin-template/node_modules/antd/lib/style/color/bezierEasing.less(108ํ, 0์ด)
็่ตทๆฅๆฏ ้ฃ่กless็ๅๆณ ไธ่ฎค๏ผๅฐฑๆฅ้ไบใ
์ด ๋ ์ ๋ฒ์ ๋ฒ๊ทธ!!!!! ๋ซ๋ค!
Inline JavaScript is not enabled. Is it set in your options?
์ธ๋ผ์ธ ์๋ฐ ์คํฌ๋ฆฝํธ ์ต์ ์ ์ผ๋ณด์ญ์์ค.
์ด ์ต์ ์ ์ด๋์์ ์ค์ ํฉ๋๊น?
๋ฒ์ : [email protected]
[email protected] ๋ ๊ด์ฐฎ์ต๋๋ค.
[email protected] , ๊ตฌ์ฑ ํญ๋ชฉ javascriptEnabled: true๋ฅผ
{ loader: 'less-loader', options: { javascriptEnabled: true } }
๊ทธ๋ฌ๋ ์ฌ์ ํ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
@Lovesueee ํธ๋ https://github.com/less/less.js/issues/3113
ํดํน ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋์ ํ๋ฌ๊ทธ์ธ์ ๋ ์ ๊ฒ ๊ตฌํํ๋ ๊ฒ์ด antd๊น์ง์ธ ๊ฒ ๊ฐ์ต๋๋ค. @yesmeck ์์ ์ ์ธ์ ์์ํ ์ ์๋์?
https://github.com/ant-design/ant-design/commit/9634bea391dd2b7b17f1e89383577e248081a044 ์์ ์์ ๋์์ต๋๋ค.
์์ฃผ ์ข์ต๋๋ค. ์ด ์์ ์ผ๋ก ์ ๋ฒ์ ์ ๊ฒ์ํ ์ ์์ต๋๊น? ๊ฐ์ฌ ํด์!
@bkniffler ์ด๋ฒ ์ฃผ๋ง.
@bkniffler ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก 2.7 ๋ฏธ๋ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@yesmeck์ ์ด์ ๋ฅผ ๋ชจ๋ฅด์ง๋ง 3.3.0 ๋ฆด๋ฆฌ์ค์์๋ ์ฌ์ ํ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค. 2.7๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํฉ๋๋ค.
@madisvain { loader: 'less-loader', options: { javascriptEnabled: true } }
less@3๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๊ตฌ์ฑ ๋ฐ ์คํ์ผ์ด ๋ณด๊ณ ๋์ง ์๊ฑฐ๋ ํ์๋์ง ์๋ ๋ฌธ์ ๋ ๋ฌด์์ ๋๊น?
๊ฐ๋ฏธ 3.6.3
2.7.2 ๋ฏธ๋ง
๋ก๋๊ฐ ์ ์ 4.1.0
@webMasterMrBin ๋ ๋ก๋๋ฅผ ํตํด CSS ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํ์ง ๋ง์ญ์์ค
@afc163 ์นํฉ ์ ๊ธฐ๋ณธ์ ๋ณด์ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค
create-react-app์ ๊บผ๋ด์ง ์๊ณ react-app-rewire-less
์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ํจํค์ง๋ฅผ 2.1.1์์ 2.1.2๋ก ์
๋ฐ์ดํธํ ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ด ์๋ฃจ์
์ package.json
์์ ๋ฒ์ ์ "2.1.1"๋ก ์ ์งํ๋ ๊ฒ์
๋๋ค.
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@FeynmanDNA ๋๋ ์ด ์ต์ ์ config-overrides.js์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
config = rewireLess.withLoaderOptions({
javascriptEnabled: true
})(config, env);
@ํ๋ก์คํค ๊ฐ์ฌํฉ๋๋ค! ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค
๋ด๊ฐ ์ป๋ ์ฝ์์ @froston ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
Failed to compile
./src/resources/_antd.less
Module build failed:
.antCheckboxFn();
^
Cannot read property 'eval' of null
in /Users/ulisescarreon/Sites/doux_repositories/cleanui-admin-template-react/node_modules/antd/lib/checkbox/style/index.less (line 4, column 0)
์ด๋ค ์ถฉ๊ณ ?
@froston : ๋์์ด ๋์์ต๋๋ค. ์ ์๋ํฉ๋๋ค ๐ฏ
์ธ๋ผ์ธ ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฑํํ๋ ๊ฒ์ด ์์ ํ์ง ์์ต๋๊น?
@ulisescarreonalvarez ํด๊ฒฐํ์ จ๋์ ?
@hecomp
์๋ ํ์ธ์ package.json์์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ์ญ์์ค.
"react-app-rewire-less": "^2.1.1",
์ด์:
"react-app-rewire-less": "2.1.1",
์๋
ํ์ธ์ @ulisescarreonalvarez ๊ทํ์ ๊ฐ๋ฏธ ๋ฒ์ ์ ๋ฌด์์
๋๊น?
์ง๊ธ ๋ฐ๊ณ ์์ต๋๋ค.
./src/resources/_antd.less
Module build failed: Error: Cannot find module 'less'
๋ด ๊ฒ์ 3.5.3
@ulisescarreonalvarez config-override.js๋ฅผ ๊ณต์ ํ ์ ์์ต๋๊น?
@hecomp config-overrides.js:
const rewired = require('react-app-rewired')
const rewireLess = require('react-app-rewire-less')
const rewireEslint = require('react-app-rewire-eslint')
function rewire(config, env) {
const cssLoader = rewired.getLoader(
config.module.rules,
rule => rule.test && String(rule.test) === String(/\.css$/)
)
const sassLoader = {
test: /\.scss$/,
use: [...(cssLoader.loader || cssLoader.use), 'sass-loader']
}
const oneOf = config.module.rules.find(rule => rule.oneOf).oneOf
oneOf.unshift(sassLoader)
config = rewired.injectBabelPlugin('transform-decorators-legacy', config)
config = rewireLess(config, env)
config = rewireEslint(config, env)
config = rewireLess.withLoaderOptions({
javascriptEnabled: true
})(config, env);
return config
}
module.exports = rewire
jsconfig.json:
{
"compilerOptions": {
"target": "ES6",
"experimentalDecorators": true
},
"exclude": ["node_modules"]
}
ํจํค์ง.json:
{
"name": "Project",
"version": "0.1.0",
"private": true,
"homepage": ".",
"devDependencies": {
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"husky": "^0.14.3",
"lint-staged": "^4.0.2",
"node-sass": "^4.9.0",
"prettier": "^1.5.3",
"querystring": "^0.2.0",
"react-app-rewire-eslint": "^0.2.3",
"react-app-rewire-less": "2.1.1",
"react-app-rewired": "^1.5.2",
"react-dnd": "^2.6.0",
"react-dnd-html5-backend": "^2.6.0",
"react-scripts": "^1.1.4",
"redux-devtools-extension": "^2.13.0",
"redux-logger": "^3.0.1",
"sass-loader": "^7.0.1"
},
"dependencies": {
"@rowno/sparkline": "^3.0.1",
"ajv": "^6.5.0",
"antd": "^3.5.3",
"axios": "^0.18.0",
"bootstrap": "^4.1.1",
"chart.js": "^2.7.2",
"chartist": "^0.10.1",
"chartist-plugin-tooltip": "^0.0.11",
"classnames": "^2.2.5",
"d3-dsv": "^1.0.8",
"d3-format": "^1.2.1",
"d3-scale": "^1.0.7",
"d3-time-format": "^2.1.1",
"draft-js": "^0.10.5",
"enquire-js": "^0.2.1",
"fetch-jsonp": "^1.1.3",
"immutability-helper": "^2.7.0",
"immutable": "^3.8.2",
"jquery": "^3.3.1",
"lodash": "^4.17.10",
"moment": "^2.19.3",
"moment-timezone": "^0.5.14",
"peity-react": "^0.0.7",
"popper.js": "^1.14.3",
"prop-types": "^15.5.10",
"rc-drawer-menu": "^0.5.7",
"react": "^16.4.0",
"react-avatar-editor": "^10.2.1",
"react-c3js": "^0.1.20",
"react-chartist": "^0.13.1",
"react-chartjs-2": "^2.7.0",
"react-container-query": "^0.11.0",
"react-custom-scrollbars": "^4.2.1",
"react-dom": "^16.4.0",
"react-draft-wysiwyg": "^1.12.13",
"react-helmet": "^5.2.0",
"react-infinite-scroller": "^1.1.4",
"react-loadable": "^5.4.0",
"react-redux": "^5.0.7",
"react-redux-spinner": "^1.1.3",
"react-router": "^4.2.0",
"react-router-dom": "^4.2.2",
"react-router-redux": "^5.0.0-alpha.6",
"react-stockcharts": "^0.7.0-beta.22",
"react-syntax-highlighter": "^7.0.4",
"react-transition-group": "^2.3.1",
"react-virtualized": "^9.18.5",
"redux": "^3.7.2",
"redux-act": "^1.3.0",
"redux-thunk": "^2.2.0",
"reqwest": "^2.0.5",
"webpack": "^3.12.0"
},
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"eject": "react-scripts eject",
"precommit": "lint-staged"
},
"lint-staged": {
"src/**/*.js": [
"prettier --tab-width 2 --print-width 100 --single-quote --trailing-comma all --no-semi --parser babylon --write"
]
}
}
@Remimstr
์ธ๋ผ์ธ ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฑํํ๋ ๊ฒ์ด ์์ ํ์ง ์์ต๋๊น?
๊ทธ๊ฒ์ ๋ ์ ์์ต๋๋ค. ์ํ์ Less ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ ๋ง๋ฅผ ํ์ฑํํ๊ธฐ ์ํด ๋ณ์์ ๋ํด "์จ๋ผ์ธ ๊ตฌ์ฑ"์ ๊ฐ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ํด๋น ์ ๋ ฅ์ ์ญ์ ํ์ง ์์ผ๋ฉด ๋ณธ์ง์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ํ๊ฐํ๊ฒ ๋ฉ๋๋ค.
@theme-color: `code_to_delete_my_whole_computer_oops()`
๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ธฐ ์ํด javascriptEnabled ์ต์
์ ์ฌ์ ์ํ๋๋ก ํจ์ผ๋ก์จ ๋ณธ์ง์ ์ผ๋ก ์ด๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ์ ์ฌ์ ์ธ ๋ณด์ ํ์ ์ ์ฌ๋ ๊ฒ์
๋๋ค. ์ฌ์ค, ๊ทธ๊ฒ์ ๋น์ ์ด ๊ทธ ์ต์
์ ์ฌ์ฉํ์ฌ ๋ฏธ์์ฑ ์
๋ ฅ์ Less์ ๋ฃ์์ ๋๋ง ๋ฐ์ํ์ง๋ง, ์ด ์ต์
์ด ์์ผ๋ฉด ์ด๊ท ๋์ง ์์ ์
๋ ฅ์ ๋จ์ํ ๊ตฌ๋ฌธ ๋ถ์๋์ง ์์ต๋๋ค. ๊ทธ๋์ javascriptEnabled: true
์ต์
์ ๊ฐ์ ๋ก ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋์์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ ํ๊ณ @plugin
๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@matthew-dean ๋น์ ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ฌ์ฑํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๊น?
@afc163 ๋ฌผ๋ก ์ ๋๋ค. ์ฒซ์งธ, ์ด ๊ฑฐ๋ํ ๊ธฐ๋ฅ์ ์ค์ ๋ก ๋ฌด์์ ํ๊ณ ์์ต๋๊น? ์ถ๋ ฅ์ด ๋ฌด์์ธ์ง ๋ช ํํ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ด ์ค์ this.colorEasing
์์ต๋๋ค. ํ์ง๋ง ์? this
์ ๊ฐ์น๋ ๋ฌด์์
๋๊น? ์ ์ญ์ ๋ค๋ฅธ ๋ชจ๋๋ก ์ ์ถํ๋ ค๊ณ ํฉ๋๊น? https://github.com/ant-design/ant-design/blob/cfdf06213b952451600ae659e69fa302a7baf271/components/style/color/bezierEasing.less#L102
์ผ๋ง ์ ์ ์ ์ถํ ๋ฌธ์ ์ ๋ฐ๋ฅด๋ฉด ์, ์๋์ ์ผ๋ก ๋ฃจํธ ๋ค์์คํ์ด์ค๋ก ์ ์ญ์ ์ ์ถํ๊ณ ์๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. https://github.com/ant-design/ant-design/issues/11097
@matw-dean ์ ์ง๋ฌธ์ ๋ต๋ณํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
@afc163 ์ฌ๊ธฐ์์ ํ๋ณดํ์ต๋๋ค. https://github.com/ant-design/ant-design/pull/13242
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด๋ด, ๋๋ antd๋ฅผ ์ฌ์ฉํ ๋ ์ด์ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ง๋ฌ์ต๋๋ค.
./src/index.less
๋ชจ๋ ๋น๋ ์คํจ:
// https://github.com/ant-design/ant-motion/issues/44
.tinyColorMixin();
^^
๊ทธ๋ฆฌ๊ณ ๋ด config-overrides.js
const { injectionBabelPlugin } = require('react-app-rewired');
const rewireLess = require('react-app-rewire-less');
module.exports = ํจ์ ์ฌ์ ์(๊ตฌ์ฑ, ํ๊ฒฝ) {
๊ตฌ์ฑ = ์ฃผ์
๋ฐ๋ฒจํ๋ฌ๊ทธ์ธ(
['import', { libraryName: 'antd', libraryDirectory: 'es', style: true }], // ๊ฐ์ ธ์ค๊ธฐ CSS๋ฅผ less๋ก ๋ณ๊ฒฝ
๊ตฌ์ฑ
);
๊ตฌ์ฑ = rewireless.withLoaderOptions({
์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ: ์ฐธ
})(๊ตฌ์ฑ, ํ๊ฒฝ);
๋ฐํ ๊ตฌ์ฑ;
};
๋ด package.json ์ด์ ๊ฐ์
"react-app-rewire-less": "^2.1.3",
"react-app-rewired": "^1.6.2",
์๋
ํ์ธ์ - jsx์์ jsx + ts๋ก ํ๋ก์ ํธ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ค๊ณ ํฉ๋๋ค.
์ค์ ๋ก JHipster๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ๊ฐ๋ฐ๋ ๊ฒ๊ณผ ๊ด๋ฆฌ ํ
ํ๋ฆฟ์ ๋ณํฉํ๊ณ ์์ต๋๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด ์ค๋ ๋์์ ๊ฒช์๋ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค...
./src/resources/_antd.less(./node_modules/css-loader??ref--9-1!./node_modules/less-loader/dist/cjs.js??ref--9-2! ./src/resources/_antd.less)
๋ชจ๋ ๋น๋ ์คํจ(./node_modules/less-loader/dist/cjs.js์์):
.antCheckboxFn();
^^
null์ 'eval' ์์ฑ์ ์ฝ์ ์ ์์ต๋๋ค.
Documentswscleanui-typescriptnode_modulesantdlibcheckboxstyleindex.less(4ํ, 0์ด)
๋ด webpack ๊ตฌ์ฑ์์ ๋ ๋ก๋ ์๋ฐ ์คํฌ๋ฆฝํธ ์ต์
์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋นํ์ฑํํ๋ฉด 'Inline Javascript' ์ค๋ฅ๊ฐ ํ์๋๊ณ ํ์ฑํํ๋ฉด ์์ ๋ด์ฉ์ด ํ์๋ฉ๋๋ค.
์ด๋ค ์์ด๋์ด?
webpack.dev.js
๋ชจ๋: {
๊ท์น: [
{
ํ
์คํธ: /.less$/,
์ฌ์ฉํ๋ค: [
{loader: 'style-loader' // JS ๋ฌธ์์ด์์ ์คํ์ผ ๋
ธ๋ ์์ฑ
}, {
loader: 'css-loader', // CSS๋ฅผ CommonJS๋ก ๋ณํ
์ต์
:{ importLoaders: 1}
},
{
๋ก๋: '๋ ๋ก๋',
์ต์
: {
์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ: ์ฐธ
}
}]
},
{
ํ
์คํธ: /.(sa|sc|c)ss$/,
์ฌ์ฉ: ['์คํ์ผ ๋ก๋', 'css-๋ก๋', 'ํฌ์คํธcss-๋ก๋', {
๋ก๋: 'sass-loader',
์ต์
: { ๊ตฌํ: sass }
}
]
},
]
}
`
ํจํค์ง.json
[{
"name": "tensor-base-template",
"version": "0.1.0",
"private": true,
"homepage": ".",
"devDependencies": {
"@types/chai": "4.1.4",
"@types/enzyme": "3.1.13",
"@types/jest": "23.3.1",
"@types/lodash": "4.14.116",
"@types/mocha": "5.2.5",
"@types/node": "10.9.2",
"@types/react": "16.4.12",
"@types/react-dom": "16.0.7",
"@types/react-redux": "6.0.6",
"@types/react-router-dom": "4.3.0",
"@types/redux": "3.6.31",
"@types/selenium-webdriver": "3.0.10",
"@types/webpack-env": "1.13.6",
"autoprefixer": "9.2.0",
"browser-sync": "2.26.3",
"browser-sync-webpack-plugin": "2.2.2",
"cache-loader": "1.2.2",
"chai": "4.1.2",
"chai-as-promised": "7.1.1",
"copy-webpack-plugin": "4.5.2",
"core-js": "2.5.7",
"cross-env": "5.2.0",
"css-loader": "1.0.0",
"enzyme": "3.5.0",
"enzyme-adapter-react-16": "1.3.0",
"enzyme-to-json": "3.3.4",
"file-loader": "2.0.0",
"fork-ts-checker-webpack-plugin": "0.4.9",
"friendly-errors-webpack-plugin": "1.7.0",
"generator-jhipster": "5.7.0",
"html-webpack-plugin": "3.2.0",
"husky": "1.1.0",
"identity-obj-proxy": "3.0.0",
"jest": "23.5.0",
"jest-junit": "5.1.0",
"jest-sonar-reporter": "2.0.0",
"json-loader": "0.5.7",
"less": "^3.9.0",
"less-loader": "^4.1.0",
"lint-staged": "7.3.0",
"mini-css-extract-plugin": "0.4.2",
"mocha": "5.2.0",
"moment-locales-webpack-plugin": "1.0.7",
"optimize-css-assets-webpack-plugin": "5.0.0",
"postcss-loader": "3.0.0",
"prettier": "1.14.3",
"protractor": "5.4.0",
"react-infinite-scroller": "1.2.0",
"redux-mock-store": "1.5.3",
"rimraf": "2.6.2",
"sass": "1.13.0",
"sass-loader": "7.1.0",
"simple-progress-webpack-plugin": "1.1.2",
"sinon": "6.1.5",
"source-map-loader": "0.2.4",
"sourcemap-istanbul-instrumenter-loader": "0.2.0",
"stripcomment-loader": "0.1.0",
"style-loader": "0.22.1",
"swagger-ui": "2.2.10",
"terser-webpack-plugin": "1.0.2",
"thread-loader": "1.2.0",
"to-string-loader": "1.1.5",
"ts-jest": "23.1.4",
"ts-loader": "4.5.0",
"ts-node": "7.0.1",
"tslint": "5.11.0",
"tslint-config-prettier": "1.15.0",
"tslint-eslint-rules": "5.4.0",
"tslint-loader": "3.6.0",
"tslint-react": "3.6.0",
"typescript": "3.0.1",
"webpack": "4.17.1",
"webpack-cli": "3.1.0",
"webpack-dev-server": "3.1.6",
"webpack-merge": "4.1.4",
"webpack-notifier": "1.7.0",
"workbox-webpack-plugin": "3.4.1",
"write-file-webpack-plugin": "4.3.2",
"xml2js": "0.4.19"
},
"dependencies": {
"@rowno/sparkline": "^3.0.1",
"antd": "^3.11.2",
"axios": "^0.18.0",
"bootstrap": "^4.1.1",
"classnames": "^2.2.5",
"enquire-js": "^0.2.1",
"immutability-helper": "^2.7.0",
"immutable": "^3.8.2",
"lodash": "^4.17.10",
"moment": "^2.19.3",
"moment-timezone": "^0.5.14",
"peity-react": "^0.0.7",
"prop-types": "^15.5.10",
"rc-drawer": "^1.4.4",
"react": "^16.4.12",
"react-container-query": "^0.11.0",
"react-custom-scrollbars": "^4.2.1",
"react-dom": "^16.4.7",
"react-helmet": "^5.2.0",
"react-hot-loader": "3.1.1",
"react-infinite-scroller": "^1.1.4",
"react-loadable": "^5.4.0",
"react-redux": "5.0.7",
"react-redux-spinner": "^1.1.3",
"react-router": "^4.2.0",
"react-router-dom": "4.3.1",
"react-router-redux": "^5.0.0-alpha.6",
"redux": "^3.7.2",
"redux-act": "^1.3.0",
"redux-devtools": "3.4.1",
"redux-devtools-dock-monitor": "1.1.3",
"redux-devtools-extension": "^2.13.7",
"redux-devtools-log-monitor": "1.4.0",
"redux-logger": "^3.0.6",
"redux-promise-middleware": "5.1.1",
"redux-thunk": "^2.2.0"
},
"scripts": {
"prettier:format": "prettier --write \"src/**/*.{json,ts,tsx,css,scss}\"",
"lint": "tslint --project tsconfig.json -e 'node_modules/**'",
"lint:fix": "npm run lint -- --fix",
"cleanup": "rimraf target/www",
"start": "npm run webpack:dev",
"start-tls": "npm run webpack:dev -- --env.tls",
"test": "npm run lint && jest --coverage --logHeapUsage -w=2 --config src/test/javascript/jest.conf.js",
"test:watch": "npm test -- --watch",
"webpack:dev": "npm run webpack-dev-server -- --config webpack/webpack.dev.js --inline --port=9060 --env.stats=minimal",
"webpack:dev-verbose": "npm run webpack-dev-server -- --config webpack/webpack.dev.js --inline --port=9060 --profile --progress --env.stats=normal",
"webpack:build:main": "npm run webpack -- --config webpack/webpack.dev.js --env.stats=minimal",
"webpack:build": "npm run cleanup && npm run webpack:build:main",
"webpack:prod:main": "npm run webpack -- --config webpack/webpack.prod.js --profile",
"webpack:prod": "npm run cleanup && npm run webpack:prod:main",
"webpack:test": "npm run test",
"webpack-dev-server": "node --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js",
"webpack": "node --max_old_space_size=4096 node_modules/webpack/bin/webpack.js"
},
"lint-staged": {
"src/**/*.js": [
"prettier --tab-width 2 --print-width 100 --single-quote --trailing-comma all --no-semi --parser babylon --write"
]
}
}
]
node-less-chokidar
์ฌ์ฉํ ๋ ์ฌ์ ํ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ฌ๋๋ค์ ์ํด.
์ด์ ๋ํ PR ์ด ์์๋ ๊ฒ ๊ฐ์ง๋ง 2๊ฐ์ ์ด์ ๋ณํฉ๋์ง ์์์ต๋๋ค. \node_modules\node-less-chokidar\bin\node-less-chokidar
ํ์ผ์ ํด๋น PR ์ปค๋ฐ์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ง์ ์ํํ ์ ์์ผ๋ฉฐ(๋จ ๋ช ์ค) ์๋ํฉ๋๋ค.
์ปค๋ฐ ์ธ๋ถ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://github.com/sampi/node-less-chokidar/pull/14/commits/934af235d16f63edaf9b8ae04eb22e3b82917701
ํ๋ฌ๊ทธ์ธ ๋ฒ์ (less-loader) ๋ฒํธ๊ฐ 6 ์ด์์ธ ๊ฒฝ์ฐ:
"์ ์ ๋ก๋": "^6.1.0",
"๋": "^2.7.3",
๊ทธ๊ฒ์ ์ฐ๋ ์๋ก์ด ๋ฐฉ๋ฒ์
{
๋ก๋: "๋ ๋ก๋",
์ต์
: {
์ ์ ์ต์
: {
์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ: ์ฐธ,
}
}
}
ํ๋ฌ๊ทธ์ธ ๋ฒ์ (less-loader) ๋ฒํธ๊ฐ 6 ์ด์์ธ ๊ฒฝ์ฐ:
"์ ์ ๋ก๋": "^6.1.0",
"๋": "^2.7.3",๊ทธ๊ฒ์ ์ฐ๋ ์๋ก์ด ๋ฐฉ๋ฒ์
{
๋ก๋: "๋ ๋ก๋",
์ต์ : {
์ ์ ์ต์ : {
์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ: ์ฐธ,
}
}
}
ํ์ ์ฝ๋ ์คํ์ผ:
{
loader: 'less-loader',
options: {
lessOptions: {
javascriptEnabled: true
}
}
}
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
[email protected] ๋ ๊ด์ฐฎ์ต๋๋ค.
[email protected] , ๊ตฌ์ฑ ํญ๋ชฉ javascriptEnabled: true๋ฅผ
๊ทธ๋ฌ๋ ์ฌ์ ํ ์ค๋ฅ๊ฐ ์์ต๋๋ค.