我想做一个JS库来播放视频。
我从Dailymotion和JWPlayer开始。
根据用户想要播放的内容,我希望动态加载dailymotion或jwPlayer sdk。
对于Dailymotion,我从CDN请求他们的SDK,这样我就可以在运行时添加一个脚本标记,很好。
对于JWPLayer,我拥有所有的javascript,但是我希望它位于单独的块中,所以我使用动态导入。
在我的输出目录中有:
-
main.bundle.js包
-
jwplayer.chunk.js文件
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',
}
],
},
};
巴贝尔
:
{
"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
我不知道该如何解决这个问题,有没有办法在重新处理库时保留动态导入?