有沒有辦法通過替換一些資產和組件從單個應用程序構建多個應用程序? (Is there a way to build multiple apps from single one with replacing some assets and components?)


問題描述

有沒有辦法通過替換一些資產和組件從單個應用程序構建多個應用程序? (Is there a way to build multiple apps from single one with replacing some assets and components?)

下面有我的 create‑react‑app 項目的文件夾結構。我有一個項目,但有多個結果。在開發和構建 projectA 時,我想複製 projectA 文件夾下的所有文件並將它們粘貼到必要的地方。

我可以使用主題,但是有很多項目要構建,並且組件可以完全與項目相關。在此方法中,login.js 和其他一些組件將為每個項目設置單獨的條件塊。這些組件在幾個項目之後會很亂。而且我不希望構建文件中出現其他項目的徽標。

我選擇動態覆蓋必要的文件。我正在尋找最佳實踐。請幫忙。

projectA
    public
        index.html
        favicon.ico
    src 
        images
            logo.png
        pages
            page.js (this extends base_page)

projectB
    public
        index.html
        favicon.ico
    src 
        images
            logo.png
        pages
            page.js (this extends base_page)

public
    index.html
    favicon.ico
src
    images
        logo.png
    pages
        app.js
        base_page.js
        page.js (this extends base_page)
    index.js

參考解法

方法 1:

It's possible, but I think you first have to restructure your folders:

project
 |‑‑webpack.config.js
 `‑‑src
     |‑‑common
     |   `‑‑pages
     |      |‑‑base‑page.js
     |      `‑‑other‑resources.js
     |‑‑appA
     |   |‑‑images
     |   |  `‑‑logoA.png
     |   `‑‑pages
     |      `‑‑page.js
     |‑‑appB
     |   |‑‑images
     |   |  `‑‑logoB.png
     |   `‑‑pages
     |      `‑‑page.js
     ...

Then in your appA/pages/page.js, you can do something like

import Page from '../../common/pages/base‑page'

And in your webpack, the entry can be

module.exports = {
  entry: [
    './src/appA/index.js',
    './src/appB/index.js',
    // other apps
  ]
}

However I'm not sure if this is possible without ejecting create‑react‑app.

(by Sezer EgrekDerek Nguyen)

參考文件

  1. Is there a way to build multiple apps from single one with replacing some assets and components? (CC BY‑SA 2.5/3.0/4.0)

#Webpack #create-react-app #reactjs #yarnpkg






相關問題

Babel 6 轉換運行時:$export 不是函數 (Babel 6 transform-runtime: $export is not a function)

Webpack 和 Sass 正確處理 background: url() 圖像,但是在與 webpack-dev-server 一起使用時找不到它 (Webpack and Sass correctly processes background: url() image but then it's not found when used with webpack-dev-server)

Babel 和 ES6 出現意外的“Uncaught TypeError: XXX is not a constructor”錯誤 (Unexpected "Uncaught TypeError: XXX is not a constructor" errors with Babel and ES6)

Webpack bundle ENOENT:沒有這樣的文件或目錄 fs.readdirSync (Webpack bundle ENOENT: no such file or directory fs.readdirSync)

有沒有辦法通過替換一些資產和組件從單個應用程序構建多個應用程序? (Is there a way to build multiple apps from single one with replacing some assets and components?)

Babel 7 不能正確轉換 index.js (Babel 7 don't convert index.js properly)

使用 Yarn 安裝的軟件包開始出現 sweetalert2 之類的錯誤 (packages installed with Yarn start to give error like sweetalert2)

找不到模塊 RecipeStyle.css (cannot find module RecipeStyle.css)

用於文件、子文件的 Webpack 加載器並將它們添加到跟踪列表 (Webpack loader for file, subfiles and add them to tracking list)

Webpack:沒有加載器來處理 SCSS 是輸入存在 (Webpack: no loader to handle the SCSS is input is present)

Webpack 在初始構建後不構建捆綁包 (Webpack not building bundle after initial build)

從其他機器訪問 webpack DevServer 子 URL 時出現 ERR_SSL_PROTOCOL_ERROR (ERR_SSL_PROTOCOL_ERROR when accessing webpack DevServer sub-URLs from a different machine)







留言討論