1.0.0 • Published 2 years ago

packagename-to-path v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

about

convert project dependent NPM packages into url

use

import packageNameToPath from 'packagename-to-path'

const packageNamePath = packageNameToPath(
  [
      {
          "name": "vue",
          "global": "Vue",
          "path": (packageinfo) => {
              if (packageinfo && packageinfo.name && packageinfo.version && packageinfo.unpkg) {
                  return `https://unpkg.com/${packageinfo.name}@${packageinfo.version}/${packageinfo.unpkg}`
              }
              return `https://unpkg.com/vue@3.2.37/dist/vue.global.js` 
          }
      },
      {
          "name": "vue-router",
          "global": "VueRouter",
          "path": (packageinfo) => {
              if (packageinfo && packageinfo.name && packageinfo.version && packageinfo.unpkg) {
                  return `https://unpkg.com/${packageinfo.name}@${packageinfo.version}/${packageinfo.unpkg}`
              }
              return `https://unpkg.com/vue-router@4.0.16/dist/vue-router.global.js` 
          }
      },
      {
          "name": "vue-demi",
          "global": "VueDemi",
          "path": "https://unpkg.com/vue-demi@0.13.1/lib/index.iife.js"
      },
      {
          "name": "pinia",
          "global": "Pinia",
          "path": (packageinfo) => {
              if (packageinfo && packageinfo.name && packageinfo.version && packageinfo.unpkg) {
                  return `https://unpkg.com/${packageinfo.name}@${packageinfo.version}/${packageinfo.unpkg}`
              }
              return `https://unpkg.com/pinia@2.0.14/dist/pinia.iife.js` 
          }
      },
      {
          "name": "pinia-plugin-persist",
          "global": "piniaPersist",
          "path": (packageinfo) => {
              if (packageinfo && packageinfo.name && packageinfo.version && packageinfo.unpkg) {
                  return `https://unpkg.com/${packageinfo.name}@${packageinfo.version}/${packageinfo.unpkg}`
              }
              return `https://unpkg.com/pinia-plugin-persist@1.0.0/dist/pinia-persist.umd.js` 
          }
      },
      {
          "name": "axios",
          "global": "axios",
          "path": (packageinfo) => {
              if (packageinfo && packageinfo.name && packageinfo.version && packageinfo.unpkg) {
                  return `https://unpkg.com/${packageinfo.name}@${packageinfo.version}/${packageinfo.unpkg}`
              }
              return `https://unpkg.com/axios@0.27.2/dist/axios.min.js` 
          }
      },
      {
          "name": "dayjs",
          "global": "dayjs",
          "path": (packageinfo) => {
              if (packageinfo && packageinfo.name && packageinfo.version && packageinfo.unpkg) {
                  return `https://unpkg.com/${packageinfo.name}@${packageinfo.version}/${packageinfo.unpkg}`
              }
              return `https://unpkg.com/dayjs@1.11.3/dayjs.min.js` 
          }
      },
      {
          "name": "ant-design-vue",
          "global": "antd",
          "path": (packageinfo) => {
              if (packageinfo && packageinfo.name && packageinfo.version && packageinfo.unpkg) {
                  return `https://unpkg.com/${packageinfo.name}@${packageinfo.version}/${packageinfo.unpkg}`
              }
              return `https://unpkg.com/ant-design-vue@3.2.9/dist/antd.min.js` 
          }
      },
      {
          "name": "ant-design-vue/dist/antd.css",
          "path": (packageinfo) => {
              if (packageinfo && packageinfo.name && packageinfo.version && packageinfo.unpkg) {
                  return `https://unpkg.com/${packageinfo.name}@${packageinfo.version}/dist/antd.css`
              }
              return `https://unpkg.com/ant-design-vue@3.2.9/dist/antd.css` 
          }
      },
      {
          "name": "lodash",
          "global": "_",
          "path": (packageinfo) => {
              if (packageinfo && packageinfo.name && packageinfo.version && packageinfo.unpkg) {
                  return `https://unpkg.com/${packageinfo.name}@${packageinfo.version}/${packageinfo.unpkg}`
              }
              return `https://unpkg.com/lodash@4.17.21/lodash.js` 
          }
      },
      {
          "name": "mathjs",
          "global": "math",
          "path": (packageinfo) => {
              if (packageinfo && packageinfo.name && packageinfo.version && packageinfo.unpkg) {
                  return `https://unpkg.com/${packageinfo.name}@${packageinfo.version}/${packageinfo.unpkg}`
              }
              return `https://unpkg.com/mathjs@10.6.3/lib/browser/math.js` 
          }
      }
  ]
);

console.log(config);

[
  {
    name: 'vue',
    global: 'Vue',
    path: 'https://unpkg.com/vue@3.2.37/dist/vue.global.js'
  },
  {
    name: 'vue-router',
    global: 'VueRouter',
    path: 'https://unpkg.com/vue-router@4.0.16/dist/vue-router.global.js'
  },
  {
    name: 'vue-demi',
    global: 'VueDemi',
    path: 'https://unpkg.com/vue-demi@0.13.1/lib/index.iife.js'
  },
  {
    name: 'pinia',
    global: 'Pinia',
    path: 'https://unpkg.com/pinia@2.0.14/dist/pinia.iife.js'
  },
  {
    name: 'pinia-plugin-persist',
    global: 'piniaPersist',
    path: 'https://unpkg.com/pinia-plugin-persist@1.0.0/dist/pinia-persist.umd.js'
  },
  {
    name: 'axios',
    global: 'axios',
    path: 'https://unpkg.com/axios@0.27.2/dist/axios.min.js'
  },
  {
    name: 'dayjs',
    global: 'dayjs',
    path: 'https://unpkg.com/dayjs@1.11.3/dayjs.min.js'
  },
  {
    name: 'ant-design-vue',
    global: 'antd',
    path: 'https://unpkg.com/ant-design-vue@3.2.9/dist/antd.min.js'
  },
  {
    name: 'ant-design-vue/dist/antd.css',
    path: 'https://unpkg.com/ant-design-vue@3.2.9/dist/antd.css'
  },
  {
    name: 'lodash',
    global: '_',
    path: 'https://unpkg.com/lodash@4.17.21/lodash.js'
  },
  {
    name: 'mathjs',
    global: 'mathjs',
    path: 'https://unpkg.com/mathjs@10.6.3/lib/browser/math.js'
  }
]

example

vite.config.ts

  import injectExternals from 'vite-plugin-inject-externals'
  import packageNameToPath from 'packagename-to-path'

  {
    plugins: [
      // ...
      injectExternals({
        modules: config
      })
    ],
  }
1.0.0

2 years ago