Akeneo 3.1.6 CEλ₯Ό μλμΌλ‘ μ€μΉ ν ν μΉν©μ μ€νν λ μ€λ₯κ° λ°μν©λλ€. μλ λ²μ μ 보 :
operating system: MacOSX
php: 7.2.13
node: v10.16.0
yarn: 1.16.0
mysql: 5.7
μ€λ₯:
$ yarn run webpack
yarn run v1.16.0
$ yarn requirements && NODE_PATH=node_modules webpack --config $npm_package_config_source/webpack.config.js
$ node $npm_package_config_source/frontend/build/check-requirements.js
Checking PIM frontend requirements
Starting webpack from /Users/liamtoohey/src/project-akeneo in dev mode
Executing pre-build scripts
(node:19219) DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead
$ node $npm_package_config_source/frontend/build/update-extensions.js
$ node $npm_package_config_styles
Updating form extensions.json
/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/frontend/build/update-extensions.js:76
const mergedExtensions = Object.entries(merged.extensions).map(([code, extension]) => {
^
TypeError: Cannot convert undefined or null to object
at Function.entries (<anonymous>)
at mergeExtensions (/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/frontend/build/update-extensions.js:76:37)
at Object.<anonymous> (/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/frontend/build/update-extensions.js:110:26)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
at startup (internal/bootstrap/node.js:283:19)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
/Users/liamtoohey/src/project-akeneo/node_modules/webpack-shell-plugin/lib/index.js:168
throw error;
^
1
μμ νμ₯μ΄ λλ½ λ κ² κ°μ΅λλ€. μ¬μ©μ μ§μ μ½λκ°μλ λ°λλΌ μΈμ€ν΄μ€κ° μκΈ° λλ¬Έμ μ΄κ²μ λλ²κΉ νλ λ° μ΄λ €μμ κ²ͺκ³ μμ΅λλ€. λ΄κ° μ€ν ν FE λΉλ λ¨κ³μ κ΄λ ¨νμ¬ https://docs.akeneo.com/3.1/install_pim/docker/installation_docker.html μ κ°μ΄λλ₯Ό λ°λ₯΄κ³
μ€μΉ λͺ λ Ήμ΄ λ¬Έμ μμ΄ μλ£λμμΌλ©° DBλ μ’μ 보μ λλ€. μ΄μνκ² λ³΄μ΄λ λ컀λ₯Ό ν΅ν΄ μ€μ ν λμ΄ μ€λ₯λ₯Ό 볡μ ν μ μμμ΅λλ€.
μλ
νμΈμ! μ΄λ λ¨κ³μμμ΄ μ€λ₯κ° λ°μνλμ§ λ§ν μ μμ΅λκΉ? (λλ μ΄λ€ λͺ
λ Ή?)
μ΄λ€ μμ€ν
μ μ¬μ©νκ³ μμ΅λκΉ? (λ컀 λλ λ€λ₯Έ?)
μλ
@Doodoune ! MacOSXλ₯Ό μ¬μ©νμ¬μ΄ νλ‘μ νΈλ₯Ό λ‘μ»¬λ‘ μ€μ νκ³ μμ΅λλ€. λ΄ λ‘컬 μ€μ μ MAMPμ λΉμ·νμ§λ§ PHP / yarn / node λ±μ κ΄λ¦¬νκΈ° μν΄ brewλ₯Ό μ¬μ©νκ³ μμ΅λλ€. μ¬κΈ°μ μ§μ λλλ‘ yarn run webpack
λ₯Ό μ€νν λμ΄ μ€λ₯κ° λ°μν©λλ€. https://docs.akeneo.com/3.1/install_pim /manual/installation_ce_archive.html#initializing -akeneo
μ΄ PR https://github.com/akeneo/pim-community-dev/pull/9607 μ λ³κ²½ μ¬νμ μ΄ν΄λ³΄λ©΄ λ
Έλκ° /js/extensions.json
λ°μ΄ν°λ₯Ό λ€ννμ§ μλ κ²μΌλ‘ 보μ
λλ€-μλ§λ μ€λ₯μ κ΄λ ¨μ΄ μμ΅λλ€. yarn install
μ κ°μ λͺ
λ Ήμ΄ μ μ€νλκ³ μμ§λ§ λ¨κ³κ° λλ½ λμμ΅λκΉ?
@Doodoune ν₯λ―Έλ‘μ΄ μ λ°μ΄νΈκ° μμ΅λλ€. λ€μ μ κ·μ λͺ λ Ήμ λ²κ·Έκ°μλ κ² κ°μ΅λλ€.
λ΄ akeneo νλ‘μ νΈλ νμ¬ src
λλ ν 리μ μμ΅λλ€. λ°μν μ€λ₯λ web/js/require-paths.js
μμ μλͺ»λ νμΌ κ²½λ‘λ₯Ό μ½μ κΈ° λλ¬ΈμΈ κ² κ°μ΅λλ€. λ΄ web/js/require-paths.js
μ½ν
μΈ μ μ :
module.exports = ["/Users/liamtoohey/src/project-akeneo/vendor/doctrine/doctrine-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/doctrine/doctrine-cache-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/sensio/framework-extra-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/symfony/monolog-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/symfony/swiftmailer-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/doctrine/doctrine-fixtures-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/friendsofsymfony/jsrouting-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/friendsofsymfony/rest-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/liip/imagine-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/ConfigBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/DataGridBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/FilterBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/SecurityBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/TranslationBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Tool/Bundle/ConnectorBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Tool/Bundle/ClassificationBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Tool/Bundle/VersioningBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Tool/Bundle/ElasticsearchBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Tool/Bundle/BatchBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Tool/Bundle/BatchQueueBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Tool/Bundle/BufferBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Tool/Bundle/FileStorageBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Tool/Bundle/MeasureBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Tool/Bundle/StorageUtilsBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/doctrine/doctrine-migrations-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/friendsofsymfony/oauth-server-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Tool/Bundle/ApiBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/oneup/flysystem-bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/PimFilterBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/PimDataGridBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/UserManagement/Bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Channel/Bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Pim/Enrichment/Bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Pim/Structure/Bundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/DashboardBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/AnalyticsBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/ImportExportBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/InstallerBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/NotificationBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/UIBundle",
"/Users/liamtoohey/src/project-akeneo/vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/CatalogVolumeMonitoringBundle"]
보μλ€μνΌ νλ‘μ νΈλ /Users/liamtoohey/src
μμ΅λλ€. μ΄ λͺ
λ Ήμ 첫 λ²μ§Έ src
λ¬Έμμ΄κΉμ§λ§ λ¬Έμλ₯Ό μ κ±°νλ―λ‘ μ΄μ μ μ°κ²°λ regex λͺ
λ Ήμ λ¬Έμ κ° λ°μνλ κ²μΌλ‘ 보μ
λλ€.μ΄ κ²½μ°μλ Akeneo λ΄μ src
λλ ν°λ¦¬κ° μλμ§λ§ λ΄ μμ
λλ ν°λ¦¬ . λͺ κ°μ§ μλ μ¬κΈ°μμ μ°Ύμ μ μμ΅λλ€ : https://regex101.com/r/8GRLUq/1
μ΄λ‘ μΈν΄ dir
λ³μμ νμΌ κ²½λ‘λ https://github.com/akeneo/pim-community-dev/blob/v3.1.6/frontend/build/update-extensions.js#L60 look μ²λΌ
...
src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/ConfigBundle
src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/DataGridBundle
src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/FilterBundle
src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/SecurityBundle
src/project-akeneo/vendor/akeneo/pim-community-dev/src/Oro/Bundle/TranslationBundle
...
λ€μκ³Ό κ°μ΄ νμλμ΄μΌνλ κ²½μ° :
...
/Users/liamtoohey/src/vendor/akeneo/pim-community-dev/src/Oro/Bundle/ConfigBundle
/Users/liamtoohey/src/vendor/akeneo/pim-community-dev/src/Oro/Bundle/DataGridBundle
/Users/liamtoohey/src/vendor/akeneo/pim-community-dev/src/Oro/Bundle/FilterBundle
/Users/liamtoohey/src/vendor/akeneo/pim-community-dev/src/Oro/Bundle/SecurityBundle
/Users/liamtoohey/src/vendor/akeneo/pim-community-dev/src/Oro/Bundle/TranslationBundle
...
@Doodoune μ΄κ²μ λν μ λ°μ΄νΈκ° μμ΅λκΉ? μ΄ λ¬Έμ λ₯Ό μΌμΌν€λ μ κ·μμ μμ νκΈ° μν΄ PRμ μ κΈ°νμ΅λλ€.
λλ κ°μ λ¬Έμ κ° μμ΅λλ€. src / λλ ν 리μ form_extensions μμμλ ν¨ν€μ§ (μ»΄ν¬μ μμ μ€μΉ)λ₯Ό λ§λ€μμ΅λλ€. μ΄λ¬ν νμ₯μ update-extensions.jsμμ΄ μ κ·μμΌλ‘ μΈν΄λ‘λλμ§ μμ΅λλ€. κ³ μΉ μ μμ΅λκΉ? μλ§λ
@liamjtoohey λμ΄ μ κ·μμ μμ νκ³ κ·Έμ PRμ λ°μλ€μ΄κΈ°μ μΆ©λΆν©λλ€.
3.2μμλ κΉ¨μ§
@liamjtoohey μλ νμΈμ, μ¬λ¬λΆμ κΈ°μ¬κ° λ§μ€ν°λ‘ ν΅ν©λμμ΅λλ€ : # 10568 λ€μ νλ² κ°μ¬λ립λλ€!
@tamarasaurus μ΄ λ¬Έμ λ Akeneo 3.2μμ λ°± ν¬ν λμ΄μΌνμ§ μμ΅λκΉ?
κ°μ₯ μ μ©ν λκΈ
@Doodoune ν₯λ―Έλ‘μ΄ μ λ°μ΄νΈκ° μμ΅λλ€. λ€μ μ κ·μ λͺ λ Ήμ λ²κ·Έκ°μλ κ² κ°μ΅λλ€.
λ΄ akeneo νλ‘μ νΈλ νμ¬
src
λλ ν 리μ μμ΅λλ€. λ°μν μ€λ₯λweb/js/require-paths.js
μμ μλͺ»λ νμΌ κ²½λ‘λ₯Ό μ½μ κΈ° λλ¬ΈμΈ κ² κ°μ΅λλ€. λ΄web/js/require-paths.js
μ½ν μΈ μ μ :보μλ€μνΌ νλ‘μ νΈλ
/Users/liamtoohey/src
μμ΅λλ€. μ΄ λͺ λ Ήμ 첫 λ²μ§Έsrc
λ¬Έμμ΄κΉμ§λ§ λ¬Έμλ₯Ό μ κ±°νλ―λ‘ μ΄μ μ μ°κ²°λ regex λͺ λ Ήμ λ¬Έμ κ° λ°μνλ κ²μΌλ‘ 보μ λλ€.μ΄ κ²½μ°μλ Akeneo λ΄μsrc
λλ ν°λ¦¬κ° μλμ§λ§ λ΄ μμ λλ ν°λ¦¬ . λͺ κ°μ§ μλ μ¬κΈ°μμ μ°Ύμ μ μμ΅λλ€ : https://regex101.com/r/8GRLUq/1μ΄λ‘ μΈν΄
dir
λ³μμ νμΌ κ²½λ‘λ https://github.com/akeneo/pim-community-dev/blob/v3.1.6/frontend/build/update-extensions.js#L60 look μ²λΌλ€μκ³Ό κ°μ΄ νμλμ΄μΌνλ κ²½μ° :