Webpack Encore генерирует нужные ресурсы, но с пустым Entrypoints.json - PullRequest
0 голосов
/ 04 апреля 2019

Вероятно, это скорее теоретический вопрос, поэтому я просто напишу свои мысли ... Я заменяю сборку на webpack_encore в нашем приложении Symfony 3.4.Локально работает все отлично, но когда я развертываю его в нашей тестовой среде через Jenkins, он прекрасно генерирует все ресурсы, но Entrypoints.json заполнен не информацией о точках входа, а одним (не существующим) файлом.Jenkins, Composer Install, NPM BUILD и т. Д. Ничего не выходит из строя все выглядит просто отлично ...

Я работаю с:

  • "symfony / symfony": "3.4. *",
  • "symfony / webpack-encore-bundle": "^ 1.4",
  • "@ symfony / webpack-encore": "^ 0.26.0";
  • Дженкинсверы.2.167

То, что я сделал и проверил:

  • Выходной путь webpack_encore задается в конфигурационных файлах Symfony, а также в webpack.config.js;
  • Установлены разрешения на чтение / запись файлов (они создаются заново при каждой сборке)
  • пробовал в другой среде (та же проблема, нет точек входа в .json)
  • попытался воспроизвестиlokal (не получилось)
  • попробовал другую версию узла (8.x)

Так вот как выглядит Entrypoints.json:

{
  "entrypoints": {
    "main": {
      "js": [
        "/assets/main.d062ba67.js"
      ]
    }
  }
}

и вот список сгенерированных файлов:

-rw-r--r-- 1 deploy deploy 1188442 Apr  4 16:03 0.2d854ee0.js
-rw-r--r-- 1 deploy deploy   13270 Apr  4 16:03 0.e9d891b2.css
-rw-r--r-- 1 deploy deploy     103 Apr  4 16:03 entrypoints.json
drwxr-xr-x 2 deploy deploy    4096 Jan 21 11:04 fonts
drwxr-xr-x 2 deploy deploy    4096 Jan 21 11:04 images
-rw-r--r-- 1 deploy deploy      50 Apr  4 16:03 manifest.json
-rw-r--r-- 1 deploy deploy  273060 Apr  4 16:03 mijn.51e8a5cf.css
-rw-r--r-- 1 deploy deploy  399784 Apr  4 16:03 mijn.b4e892a5.js
-rw-r--r-- 1 deploy deploy     155 Apr  4 16:03 mijn_servicecentre.8ad08279.js
-rw-r--r-- 1 deploy deploy    8867 Apr  4 16:03 mijn_servicecentre.aed8de72.css
-rw-r--r-- 1 deploy deploy  131539 Apr  4 16:03 mijn_translations.6510f7fd.js
-rw-r--r-- 1 deploy deploy    1463 Apr  4 16:03 runtime.3dee20dd.js

EDIT :: Наконец, webpack.config.js

/* global __dirname */
let Encore = require("@symfony/webpack-encore");
const path = require("path");

Encore
// output path
    .setOutputPath("web/assets")
    .enableVersioning()

    // relative path in the browser
    .setPublicPath("/assets")

    // will create web/assets/mijn.js and web/assets/mijn.css && serviceCenter
    // which is than included in base.html.twig and respective...
    .addEntry("mijn", "./app/Resources/frontend/encore_mijn.js")
    .addEntry("mijn_servicecentre", "./app/Resources/frontend/encore_mijn_servicecentre.js")

    // enable sass-compilation
    .enableSassLoader(function (sassOptions) {
        sassOptions.includePaths = [
            "node_modules/bootstrap-sass/assets/stylesheets",
            "node_modules/bootstrap-datepicker/dist/css",
            "node_modules/bootstrap-select/sass",
            "node_modules/xs4-icons/dist/"
        ];
    }, {
        resolveUrlLoader: true
    })

    //expose jquery
    .addLoader({
        test: require.resolve("jquery"),
        use: [{
            loader: "expose-loader",
            options: "jQuery"
        }, {
            loader: "expose-loader",
            options: "$"
        }, {
            loader: "expose-loader",
            options: "Snow"
        }]
    })

    .addLoader({
        test: require.resolve("bazinga-translator"),
        use: [{
            loader: "expose-loader",
            options: "Translator"
        }],
    })

    .addLoader({
        loader: "webpack-modernizr-loader",
        test: /\.modernizrrc\.js$/
    })

    .addAliases({
        modernizr$: path.resolve(__dirname, "./.modernizrrc.js")
    })

    //enable compilation of vue-components
    .enableVueLoader()

    //enable sourcemaps for development reasons only
    .enableSourceMaps(!Encore.isProduction())

    // enable postcss loader for autoprefixing
    .enablePostCssLoader()

    // empty the outputPath dir before each build
    .cleanupOutputBeforeBuild()

    .enableSingleRuntimeChunk()

    .enableSingleRuntimeChunk()

    .splitEntryChunks()
;

// isProduction because we get in dev-mode real-time translation
// out of _translations.html.twig and the bazinga vendor plugin
if (Encore.isProduction()) {
    Encore.addEntry("mijn_translations", "./app/Resources/frontend/encore_translations.js")
}

// export the final configuration
module.exports = Encore.getWebpackConfig();

Есть ли у кого-нибудь мысли о том, как это можетможет быть, файлы точек входа генерируются просто отлично, но Entrypoints.json этим не заполнен?

EDIT 2 ::

Я снова запускаю все свои коммиты, и похоже, что так как яобновлен пакет npm: webpack-encore с 0.20.1 до 0.21, для которого требуется babel7eaking ...

1 Ответ

0 голосов
/ 05 апреля 2019

Помимо вашей двойной строки .enableSingleRuntimeChunk(), которая является просто опечаткой (, но вы никогда не знаете, что может быть виновником ), я думаю, что вы хотите вместо этого посмотреть файл manifest.json иметь совпадения между вашими фактическими файлами и точками входа.

Я не знаю точно, чего вы пытаетесь достичь с помощью файла entrypoints.json, но, как сказал stof : " Вы все равно должны использовать manifest.json, чтобы найти версионный путь для каждый из них"(в https://github.com/symfony/webpack-encore/issues/355)

...