定义 cdn 列表,根据项目使用 cdn 的情况自动写入 cdn 链接地址
在使用了@uyun/cli
的项目中直接安装@uyun/cli-webpack-autocdn
即可自动启动插件
html-webpack-plugin
一起使用webpack.config.js
import AutoCDNWebpackPlugin from '@uyun/cli-webpack-autocdn/plugin'
const cdns = [
{
name: '@uyun-cdn',
packages: ['core-js', 'raf/polyfill'],
dependencies: [],
src: [
{
type: 'js',
url: '/lib/R0.1/@uyun-cdn/development/@uyun-cdn.js'
}
]
},
{
name: '@uyun-charts',
packages: ['@uyun/charts'],
dependencies: ['@uyun-cdn', 'classnames-bundle', 'lodash-bundle', 'react-bundle', 'redux-bundle'],
src: [
{
type: 'js',
url: '/lib/R0.1/@uyun-charts/development/@uyun-charts.js'
}
]
},
{
name: '@uyun-components',
packages: ['@uyun/components'],
dependencies: ['@uyun-cdn', 'classnames-bundle', 'lodash-bundle', 'moment-bundle', 'react-bundle'],
src: [
{
type: 'js',
url: '/lib/R0.1/@uyun-components/development/@uyun-components.js'
},
{
type: 'css',
url: '/lib/R0.1/@uyun-components/development/@uyun-components.css'
}
]
},
{
name: '@uyun-ec-basic-layout',
packages: ['@uyun/ec-basic-layout'],
dependencies: ['@uyun-cdn', '@uyun-components', 'react-bundle'],
src: [
{
type: 'js',
url: '/lib/R0.1/@uyun-ec-basic-layout/development/@uyun-ec-basic-layout.js'
},
{
type: 'css',
url: '/lib/R0.1/@uyun-ec-basic-layout/development/@uyun-ec-basic-layout.css'
}
]
},
{
name: '@uyun-utils',
packages: ['@uyun/utils'],
dependencies: ['@uyun-cdn', 'axios-bundle'],
src: [
{
type: 'js',
url: '/lib/R0.1/@uyun-utils/development/@uyun-utils.js'
}
]
},
{
name: 'axios-bundle',
packages: ['axios'],
dependencies: ['@uyun-cdn'],
src: [
{
type: 'js',
url: '/lib/R0.1/axios-bundle/development/axios-bundle.js'
}
]
},
{
name: 'classnames-bundle',
packages: ['classnames'],
dependencies: ['@uyun-cdn'],
src: [
{
type: 'js',
url: '/lib/R0.1/classnames-bundle/development/classnames-bundle.js'
}
]
},
{
name: 'lodash-bundle',
packages: ['lodash'],
dependencies: ['@uyun-cdn'],
src: [
{
type: 'js',
url: '/lib/R0.1/lodash-bundle/development/lodash-bundle.js'
}
]
},
{
name: 'mobx-bundle',
packages: ['mobx', 'mobx-react'],
dependencies: ['@uyun-cdn', 'react-bundle'],
src: [
{
type: 'js',
url: '/lib/R0.1/mobx-bundle/development/mobx-bundle.js'
}
]
},
{
name: 'moment-bundle',
packages: ['moment'],
dependencies: ['@uyun-cdn'],
src: [
{
type: 'js',
url: '/lib/R0.1/moment-bundle/development/moment-bundle.js'
}
]
},
{
name: 'react-bundle',
packages: ['react', 'react-dom', 'prop-types'],
dependencies: ['@uyun-cdn'],
src: [
{
type: 'js',
url: '/lib/R0.1/react-bundle/development/react-bundle.js'
}
]
},
{
name: 'react-router-bundle',
packages: ['history', 'react-router', 'react-router-dom'],
dependencies: ['@uyun-cdn', 'react-bundle'],
src: [
{
type: 'js',
url: '/lib/R0.1/react-router-bundle/development/react-router-bundle.js'
}
]
},
{
name: 'redux-bundle',
packages: ['redux', 'react-redux'],
dependencies: ['@uyun-cdn', 'react-bundle'],
src: [
{
type: 'js',
url: '/lib/R0.1/redux-bundle/development/redux-bundle.js'
}
]
},
{
name: 'rxjs-bundle',
packages: ['rxjs'],
dependencies: ['@uyun-cdn'],
src: [
{
type: 'js',
url: '/lib/R0.1/rxjs-bundle/development/rxjs-bundle.js'
}
]
}
]
module.exports = {
externals: cdns.reduce((externals, { packages }) => {
packages.forEach(name => {
externals[name] = `window.__UYUN_CDN__.require('${name}')`
})
return externals
}, {}),
plugins: [new AutocdnWebpackPlugin(cnds)]
// 其他配置
}
Copyright 2013 - present © cnpmjs.org