Javascript 如何使用webpack DefinePlugin访问index.ejs中的散列包文件名
我想在preact项目中使用散列包文件名。 在preact.config.js中,输出文件为Javascript 如何使用webpack DefinePlugin访问index.ejs中的散列包文件名,javascript,reactjs,webpack,preact,Javascript,Reactjs,Webpack,Preact,我想在preact项目中使用散列包文件名。 在preact.config.js中,输出文件为config.output.filename=“[name].[hash].js” 插件是使用webpack.DefinePlugin()定义的,如下所示: config.plugins.push( new DefinePlugin({ process: { env: { API_URL: JSON.stringify(process.env.API
config.output.filename=“[name].[hash].js”代码>
插件是使用webpack.DefinePlugin()
定义的,如下所示:
config.plugins.push(
new DefinePlugin({
process: {
env: {
API_URL: JSON.stringify(process.env.API_URL),
FILE_NAME: JSON.stringify(config.output.filename)
}
}
})
);
有没有办法在index.ejs中包含bundle.[hash].js
文件。我试图通过自己创建一个哈希函数并导出哈希函数来解决这个问题
const hashNumber = hashGenerator();
delete config.entry.polyfills;
config.entry.app = "./index.js"
config.output.filename = "[name]."+hashNumber+".js";
let { plugin } = helpers.getPluginsByName(config, "ExtractTextPlugin")[0];
plugin.options.disable = true;
if (env.production) {
config.output.libraryTarget = "umd";
}
config.plugins.push(
new DefinePlugin({
process: {
env: {
HASH: JSON.stringify(hashNumber)
}
}
})
);
};
并将该散列包含在index.ejs文件中
script.src=`/bundle..js`代码>此任务可以通过解决,所有选项都可以通过选项
控制:
export default (config, env, helpers) => {
delete config.entry.polyfills;
// add hash to the file name.
config.output.filename = "[name].[hash].js";
let {plugin} = helpers.getPluginsByName(config, "ExtractTextPlugin")[0];
let html_webpack = helpers.getPluginsByName(config, 'HtmlWebpackPlugin')[0];
// not sure why but without this option it does not inject script tag.
html_webpack.plugin.options.hash = true;
plugin.options.disable = true;
if (env.production) {
config.output.libraryTarget = "umd";
}
};
在这种情况下,模板index.ejs
将用作索引 你不需要这个。将您的所有DEP包含到index.js
中,使用webpack进行编译,并将其作为脚本bundle.[hash].js
包含到您的文档中。使用HtmlWebpackPlugin?这是一种可能的方法。不,我使用的preact配置无法使用它。更清楚地说,我使用的是模板。如何输出散列包文件并在script.src=`bundle.[hash].js in index.ejsNote中使用该文件名?请注意,引用的插件页面上显示的示例更简单,更接近常规的网页包用法。我想是这样的,这是OP使用的扩展示例。你是对的,只是为寻找更通用的插件使用示例的人指明了方向。抱歉,如果问题严重,现在无法编辑。:)