ํฐ์คํ ๋ฆฌ ๋ทฐ
favicons-webpack-plugin์ copy-webpack-plugin์ผ๋ก ๋ฆฌํฉํ ๋งํ๊ธฐ
choi95 2021. 8. 13. 23:15https://choi95.tistory.com/131
์ด์ ํฌ์คํ ์์ meta ๋ฐ์ดํฐ์ ํ๋น์ฝ ์ด๋ฏธ์ง ์์ค๋ฅผ patchํ๊ธฐ ์ํด favicons-webpack-plugin์ ์ฌ์ฉํ์๋ค.
ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ํฌ๊ฒ 2๊ฐ์ง ์์ธ์ผ๋ก ์ด๋ฅผ copy-webpack-plugin์ผ๋ก ๋์ฒดํ๊ธฐ๋ก ํ์๋ค.
- ํ ์คํธ ์ฉ๋๋ก ์ง์ ํ favicon ์ด๋ฏธ์ง๊ฐ path๋ฅผ ์์ ํ์ฌ๋ ๊ทธ๋๋ก ์น ์์์ ๋๋๋ง๋๋ ๋ฌธ์ ๊ฐ ์์๋ค. build๋ฅผ ํ ๊ฒฝ์ฐ assets ํด๋ ๋ด์๋ ์๋กญ๊ฒ ์ถ๊ฐํ ์ด๋ฏธ์ง ์์ค๊ฐ ์ ๋๋ก ์ ์ฅ์ด ๋์ด ์๋๋ฐ dev server open์ ํ์ฌ ์น ์์์ ํ์ธํด ๋ณด๋ฉด ๋ฐ๋๊ธฐ ์ง์ ์ ์ด๋ฏธ์ง ์์ค๊ฐ ๊ทธ๋๋ก ๋จ์์๋ค. ํด๋น ๋ฌธ์ ์ ๋ํด์ ์ ํํ ์์ธ์ ์ฐพ์ง ๋ชปํ์๋๋ฐ ๋ง์ฝ์ ์ฐพ๊ฒ ๋๋ฉด ์ดํ ์ถ๊ฐ ํฌ์คํ ์ ํด์ผ๊ฒ ๋ค.
- favicon์ ์ฌ์ฉ๋๋ ์ด๋ฏธ์ง๋ favicon์๋ง ์ฌ์ฉ๋๋ ๊ฒ์ด ์๋๋ผ html ๋ฌธ์์ ๋ฉํ ์ ๋ณด์ ์คํ ๊ทธ๋ํ(Open Graph)์์๋ ์ฌ์ฉ๋ ์ด๋ฏธ์ง์ด๋ค. ์ฆ, ์ด๋ฏธ์ง๊ฐ ๊ณต์ ๋์ด์ผ ํ๋๋ฐ favicons-webpack-plugin์ ์ฌ์ฉํ๊ฒ ๋ ๊ฒฝ์ฐ favicon ๊ธฐ๋ฅ์๋ง ์ข ์๋๊ธฐ ๋๋ฌธ์ copy-webpack-plugin์ ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค.
Open Graph
- ์ฝํ ์ธ ์ ์์ฝ ๋ด์ฉ์ด SNS์ ๊ฒ์๋๋๋ฐ ์ต์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ๊ฐ ์ ์๋๋ก ์ค์ ํ๋ ๊ฒ
copy-webpack-plugin ์ฌ์ฉํ๊ธฐ
https://webpack.js.org/plugins/copy-webpack-plugin/
copy-webpack-plugin์ ํน์ ํ ๋๋ ํฐ๋ฆฌ๋ ํ์ผ์ ๋ณต์ฌํด ๋ฒ๋ค๋ง ๋ ํด๋ ๋ด์ ๊ฒฝ๋ก๋ก ์ฝ์ ํ๋ ํ๋ฌ๊ทธ์ธ์ด๋ค.
ํด๋น ํ๋ฌ๊ทธ์ธ์ ์ ์ฉํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ ํ์๋๋ฐ
const CopyWebpackPlugin = require('copy-webpack-plugin'); (...) plugins: [ new HtmlWebpackPlugin({ title: 'MovieInfoService', template: './template.hbs', meta: { author: "CHOI", description: "This site is where people see a various of movie info and evaluate it", viewport: 'width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1' }, (...) new CopyWebpackPlugin([ { from: 'src/img/logo', to: 'logo/' } ]) ]
Copy Plugin has been initialized using an options object that does not match the API schema. - options[0] misses the property 'patterns'.
์์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค.
ํด๋น ๋ฌธ์ ๋ฅผ ๊ตฌ๊ธ๋งํ์ฌ ์คํ ์ค๋ฒ ํ๋ก์ฐ์์ ์ฐพ์๋ณด๋,
https://stackoverflow.com/questions/61937054/npm-run-dev-fails-validationerror-invalid-options-object
This is not an issue with webpack or webpack-dev-server itself, but with the copy-webpack-plugin plugin.
With the update to the 6.x major version came a breaking change: instead of just passing the array with the config patterns directly to the CopyWebpackPlugin constructor, your now have to wrap it in the patterns property of an object and pass that.
์ฆ, webpack ์์ฒด์ ๋ฌธ์ ๊ฐ ์๋ copy-webpack-plugin์ด ๋ฒ์ 6 ์ด์๋ถํฐ๋ patterns ํ๋กํผํฐ๋ก ํ๋ฒ ๋ ๊ฐ์ธ์ค์ผ ๋๋ค๋ ๋ด์ฉ์ด์๋ค.
์ด์ ์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์๋๋ ๋ฌธ์ ์์ด ์๋ํ์๋ค.
const CopyWebpackPlugin = require('copy-webpack-plugin'); (...) plugins: [ new HtmlWebpackPlugin({ title: 'MovieInfoService', template: './template.hbs', meta: { author: "CHOI", description: "This site is where people see a various of movie info and evaluate it", viewport: 'width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1' }, (...) new CopyWebpackPlugin({ patterns: [ {from: 'src/img/logo', to: 'logo/'} ] }) ]
copy-webpack-plugin์ ์ง์ ํ path ๋ด์ ์๋ ๋ชจ๋ ๋ฆฌ์์ค๋ค์ ๋ณต์ฌํ๊ธฐ ๋๋ฌธ์ ๋๋ ํฐ๋ฆฌ๋ฅผ img ์ ์ฒด์ ํ๊ฒ์ ๋๋ค๋ฉด ๋ก๊ณ ์ธ์ ์ฐ์ด์ง ์๋ ๊ธฐํ ์ด๋ฏธ์ง ์์ค๋ค๊น์ง ๋ณต์ฌํด ์ฌ ๊ฒ์ด๋ค.
์ด๋ฅผ ์ํด ํ์ ๋๋ ํฐ๋ฆฌ logo๋ฅผ ๋ณ๋๋ก ์์ฑํด ์ค ๋ค ํด๋น ๋๋ ํฐ๋ฆฌ๋ฅผ ํ๊ฒ์ผ๋ก ์์ ํ์๋ค.
'Webpack' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
favicons-Webpack-plugin์ ํตํด favicons ์ด๋ฏธ์ง ์ ์ฉํ๊ธฐ (0) | 2021.08.13 |
---|---|
htmlํ์ผ์ cssํ์ผ์ ์ถ๊ฐํ์ฌ ๋ฒ๋ค๋งํ๋ ๊ณผ์ ์์์ ์ค์ (0) | 2021.08.13 |