我正在尝试制作一个JS库来播放视频。 我从Dailymotion和JWPlayer开始。
根据用户要播放的内容,我想动态加载dailymotion或jwPlayer sdk。
对于Dailymotion,我从CDN请求其SDK,因此我可以在运行时添加脚本标签,很好。
对于JWPLayer,我拥有所有的javascript,但我希望将其放在单独的块中,所以我正在使用动态导入。
在我的输出目录中,我有:
webpack.config.js :
const path = require('path');
const buildConfig = require('./build.config.js');
const srcDir = path.resolve(__dirname, 'src');
module.exports = {
entry: {
CorePlayer: path.resolve(srcDir, 'CorePlayer'),
},
output: {
path: path.resolve(__dirname, buildConfig.outDirectory),
filename: '[name].js',
chunkFilename: 'internal/_[name].js',
libraryTarget: 'commonjs2',
},
resolve: {
extensions: ['.js', '.jsx'],
alias: {
'@utils': path.resolve(__dirname, 'src/utils'),
'@lib': path.resolve(__dirname, 'lib'),
'~': path.resolve(__dirname, 'src'),
},
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: 'babel-loader',
}
],
},
};
.babelrc :
{
"plugins": [
"@babel/plugin-transform-runtime",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-proposal-class-properties"
],
"presets": [
[
"@babel/preset-env",
{
"modules": false,
"loose": true,
"shippedProposals": true
}
]
],
"env": {
"test": {
"presets": ["@babel/preset-env"]
}
}
}
现在,我正尝试从另一个项目中请求我的库作为模块:
import myPlayer from 'my-player';
myPlayer
是main.bundle.js
导出的内容,将成为该项目捆绑包的一部分。
但是当我想使用jwplayer显示视频时,会出现错误404,找不到jwplayer.chunk.js
我不知道如何解决此问题,在重新打包我的库时是否可以保留动态导入?