Symfony Webpack Encore生成正确的资产,但Entrypoints.json为空

Symfony Webpack Encore生成正确的资产,但Entrypoints.json为空,symfony,jenkins,webpack,webpack-encore,Symfony,Jenkins,Webpack,Webpack Encore,这可能更多的是一个理论问题,所以我会把我的想法写下来。。。在我们的symfony 3.4应用程序中,我将用webpack_encore替换assetic。Local可以很好地工作,但是当我通过Jenkins将其部署到我们的测试环境时,它可以很好地生成所有资产,但是Entrypoints.json中没有填充Entrypoints信息,而是包含一个(不存在)文件。Jenkins,Composer安装,NPM构建等。没有失败的事情,一切看起来都很好 我的工作对象是: “symfony/symfony

这可能更多的是一个理论问题,所以我会把我的想法写下来。。。在我们的symfony 3.4应用程序中,我将用webpack_encore替换assetic。Local可以很好地工作,但是当我通过Jenkins将其部署到我们的测试环境时,它可以很好地生成所有资产,但是Entrypoints.json中没有填充Entrypoints信息,而是包含一个(不存在)文件。Jenkins,Composer安装,NPM构建等。没有失败的事情,一切看起来都很好

我的工作对象是:

  • “symfony/symfony”:“3.4.*”
  • “symfony/网页包encore捆绑包”:“^1.4”
  • “@symfony/webpack encore”:“^0.26.0”
  • 詹金斯。2.167
我所做和检查的事情:

  • 在symfony配置和webpack.config.js中设置webpack_encore输出路径
  • 权限设置为读取/写入文件(它们是在每次生成时新生成的)
  • 在不同的环境中尝试(相同的问题,在.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
编辑::最后是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文件生成得很好,但entrypoints.json中却没有这样的内容吗

编辑2::


我再次运行了所有提交,看起来好像是因为我升级了npm包:webpack encore从0.20.1升级到了0.21,这要求babel7将其破坏…

除了您的双
.enableSingleRuntimeChunk()
行,这只是一个输入错误(但您永远不知道,这可能是罪魁祸首),我认为您应该查看
manifest.json
文件,以获得实际文件与入口点之间的匹配


我不知道您使用
entrypoints.json
文件究竟想要实现什么,但正如stof所说:“您仍然应该使用
manifest.json
来查找每个文件的版本连接路径”(in)

除了您的双
.enableSingleRuntimeChunk()
行,这只是一个输入错误(但您永远不知道,这可能是罪魁祸首),我认为您应该查看
manifest.json
文件,以获得实际文件与入口点之间的匹配


我不知道您使用
entrypoints.json
文件想要实现什么,但是正如stof所说:“您仍然应该使用
manifest.json
来查找每个文件的版本连接路径”(in)

Show your webpack.config.js file to Show your webpack.config.js file tooThanks对于提示,仔细检查了运行时块,遗憾的是不是罪魁祸首。manifest.json的内容也差不多:{“assets/main.js”:“/assets/main.713ede0b.js”}然后看起来你的Jenkins正在构建一个不同的版本(可能是缓存的版本),或者正确的文件输出到系统的其他地方(如果您单独发布,可能在不同的发布文件夹中?)-我有一个非常相似的网页包配置,所有东西都构建得很好。这也是我的想法,但同时我发现了错误:因为在运行js测试时进行了更新,它创建了一个新的entrypoints.json/manifest.json,而不是覆盖正确的entrypoints.json。我现在没有深入挖掘为什么会发生这种情况,因为周末时间,但它与mocha webpack包有关。感谢您的提示,仔细检查了运行时块,遗憾的是不是罪魁祸首。manifest.json的内容也差不多:{“assets/main.js”:“/assets/main.713ede0b.js”}然后看起来您的Jenkins正在构建一个不同的版本(可能是缓存的版本),或者正确的文件输出到系统的其他地方(如果您单独发布,可能在不同的发布文件夹中?)-我有一个非常相似的网页包配置,所有东西都构建得很好。这也是我的想法,但同时我发现了错误:因为在运行js测试时进行了更新,它创建了一个新的entrypoints.json/manifest.json,而不是覆盖正确的entrypoints.json。我现在没有深入挖掘为什么会发生这种情况,因为周末时间,但这与mocha网页包有关。