init
This commit is contained in:
46
node_modules/@dcloudio/uni-mp-weixin/lib/independent-plugins/generate-indepndent-entry-plugin.js
generated
vendored
Normal file
46
node_modules/@dcloudio/uni-mp-weixin/lib/independent-plugins/generate-indepndent-entry-plugin.js
generated
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
const crypto = require('crypto');
|
||||
const { generateAsset } = require('./utils');
|
||||
|
||||
const emitFileCaches = {};
|
||||
|
||||
function md5 (str) {
|
||||
const hash = crypto.createHash('md5');
|
||||
hash.update(str);
|
||||
return hash.digest('hex');
|
||||
}
|
||||
|
||||
function emitFile (filePath, source, compilation) {
|
||||
const emitFileMD5 = md5(filePath + source);
|
||||
if (emitFileCaches[filePath] !== emitFileMD5) {
|
||||
emitFileCaches[filePath] = emitFileMD5;
|
||||
compilation.assets[filePath] = generateAsset(source);
|
||||
}
|
||||
}
|
||||
|
||||
// 为独立分包【生成】入口执行文件,代替主包中的app.js
|
||||
class GenerateIndepndentEntryPlugin {
|
||||
apply (compiler) {
|
||||
compiler.hooks.emit.tapPromise('GenerateIndepndentEntryPlugin', compilation => {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
// debugger
|
||||
const independentPkgs = Object.values(process.UNI_SUBPACKAGES).filter(subPkgItem => subPkgItem.independent) || [];
|
||||
const independentEntry = independentPkgs.map(independentPkgItem => {
|
||||
return {
|
||||
file: `${independentPkgItem.root}/common/index.js`,
|
||||
source: `require('runtime.js');require('library.js');require('vendor.js');require('main.js');`,
|
||||
};
|
||||
});
|
||||
independentEntry.forEach(({ file, source }) => emitFile(file, source, compilation));
|
||||
|
||||
resolve();
|
||||
} catch (e) {
|
||||
console.error('independent.error', 'GenerateIndepndentEntryPlugin', e);
|
||||
reject(e);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GenerateIndepndentEntryPlugin;
|
||||
Reference in New Issue
Block a user