Skip to content

Commit

Permalink
Revert "build: use cjs/mjs extensions for cjs/esm builds (#1157)"
Browse files Browse the repository at this point in the history
This reverts commit b9676ca.
  • Loading branch information
posva committed May 16, 2022
1 parent c113369 commit 09ddcbe
Show file tree
Hide file tree
Showing 6 changed files with 426 additions and 552 deletions.
2 changes: 1 addition & 1 deletion docs/installation.md
Expand Up @@ -6,7 +6,7 @@

<!--email_off-->

[Unpkg.com](https://unpkg.com) provides npm-based CDN links. The above link will always point to the latest release on npm. You can also use a specific version/tag via URLs like `https://unpkg.com/vue-router@4.0.15/dist/vue-router.global.js`.
[Unpkg.com](https://unpkg.com) provides npm-based CDN links. The above link will always point to the latest release on npm. You can also use a specific version/tag via URLs like `https://unpkg.com/vue-router@4.0.5/dist/vue-router.global.js`.

<!--/email_off-->

Expand Down
2 changes: 1 addition & 1 deletion docs/zh/installation.md
Expand Up @@ -6,7 +6,7 @@

<!--email_off-->

[Unpkg.com](https://unpkg.com) 提供了基于 npm 的 CDN 链接。上述链接将始终指向 npm 上的最新版本。 你也可以通过像 `https://unpkg.com/vue-router@4.0.15/dist/vue-router.global.js` 这样的 URL 来使用特定的版本或 Tag。
[Unpkg.com](https://unpkg.com) 提供了基于 npm 的 CDN 链接。上述链接将始终指向 npm 上的最新版本。 你也可以通过像 `https://unpkg.com/vue-router@3.0.0/dist/vue-router.js` 这样的 URL 来使用特定的版本或 Tag。

<!--/email_off-->

Expand Down
7 changes: 0 additions & 7 deletions index.js

This file was deleted.

31 changes: 4 additions & 27 deletions package.json
@@ -1,32 +1,11 @@
{
"name": "vue-router",
"version": "4.0.15",
"main": "index.js",
"main": "dist/vue-router.cjs.js",
"unpkg": "dist/vue-router.global.js",
"jsdelivr": "dist/vue-router.global.js",
"module": "dist/vue-router.mjs",
"module": "dist/vue-router.esm-bundler.js",
"types": "dist/vue-router.d.ts",
"exports": {
".": {
"browser": "./dist/vue-router.esm-browser.js",
"node": {
"import": {
"production": "./dist/vue-router.prod.cjs",
"development": "./dist/vue-router.mjs",
"default": "./dist/vue-router.mjs"
},
"require": {
"production": "./dist/vue-router.prod.cjs",
"development": "./dist/vue-router.cjs",
"default": "./index.js"
}
},
"import": "./dist/vue-router.mjs"
},
"./dist/*": "./dist/*",
"./vetur/*": "./vetur/*",
"./package.json": "./package.json"
},
"sideEffects": false,
"funding": "https://github.com/sponsors/posva",
"license": "MIT",
Expand All @@ -39,8 +18,7 @@
},
"homepage": "https://github.com/vuejs/router#readme",
"files": [
"index.js",
"dist/*.{js,cjs,mjs}",
"dist/*.js",
"dist/vue-router.d.ts",
"vetur/tags.json",
"vetur/attributes.json",
Expand All @@ -50,7 +28,7 @@
"dev": "vite --config playground/vite.config.js",
"release": "bash scripts/release.sh",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 1",
"build": "rimraf dist && rollup -c rollup.config.js",
"build": "rollup -c rollup.config.js",
"build:dts": "api-extractor run --local --verbose && tail -n +9 src/globalExtensions.ts >> dist/vue-router.d.ts",
"build:playground": "vue-tsc --noEmit && vite build --config playground/vite.config.js",
"build:e2e": "vue-tsc --noEmit && vite build --config e2e/vite.config.js",
Expand Down Expand Up @@ -126,7 +104,6 @@
"nightwatch": "^1.7.11",
"nightwatch-helpers": "^1.2.0",
"prettier": "^2.4.1",
"rimraf": "^3.0.2",
"rollup": "^2.68.0",
"rollup-plugin-analyzer": "^4.0.0",
"rollup-plugin-terser": "^7.0.2",
Expand Down
66 changes: 22 additions & 44 deletions rollup.config.js
@@ -1,5 +1,4 @@
import path from 'path'
import { promises as fsp } from 'fs'
import ts from 'rollup-plugin-typescript2'
import replace from '@rollup/plugin-replace'
import resolve from '@rollup/plugin-node-resolve'
Expand All @@ -18,52 +17,47 @@ const banner = `/*!
let hasTSChecked = false

const outputConfigs = {
// each file name has the format: `dist/${name}.${format}.${ext}`
// each file name has the format: `dist/${name}.${format}.js`
// format being a key of this object
mjs: {
'esm-bundler': {
file: pkg.module,
format: `es`,
},
cjs: {
file: 'dist/vue-router.cjs',
file: pkg.main,
format: `cjs`,
},
global: {
file: pkg.unpkg,
format: `iife`,
},
browser: {
file: 'dist/vue-router.esm-browser.js',
esm: {
file: pkg.browser || pkg.module.replace('bundler', 'browser'),
format: `es`,
},
}

const stubs = {
'dist/vue-router.cjs': 'vue-router.cjs.js',
'dist/vue-router.mjs': 'vue-router.esm-bundler.js',
'dist/vue-router.prod.cjs': 'vue-router.cjs.prod.js',
}

const packageBuilds = Object.keys(outputConfigs)
const allFormats = Object.keys(outputConfigs)
// in vue-router there are not that many
const packageConfigs = packageBuilds.map(buildName =>
createConfig(buildName, outputConfigs[buildName])
const packageFormats = allFormats
const packageConfigs = packageFormats.map(format =>
createConfig(format, outputConfigs[format])
)

// only add the production ready if we are bundling the options
packageBuilds.forEach(buildName => {
if (buildName === 'cjs') {
packageConfigs.push(createProductionConfig(buildName))
} else if (buildName === 'global') {
packageConfigs.push(createMinifiedConfig(buildName))
packageFormats.forEach(format => {
if (format === 'cjs') {
packageConfigs.push(createProductionConfig(format))
} else if (format === 'global') {
packageConfigs.push(createMinifiedConfig(format))
}
})

export default packageConfigs

function createConfig(buildName, output, plugins = []) {
function createConfig(format, output, plugins = []) {
if (!output) {
console.log(require('chalk').yellow(`invalid format: "${buildName}"`))
console.log(require('chalk').yellow(`invalid format: "${format}"`))
process.exit(1)
}

Expand All @@ -76,11 +70,11 @@ function createConfig(buildName, output, plugins = []) {
// '@vue/devtools-api': 'VueDevtoolsApi',
}

const isProductionBuild = /\.prod\.[cm]?js$/.test(output.file)
const isGlobalBuild = buildName === 'global'
const isRawESMBuild = buildName === 'browser'
const isNodeBuild = buildName === 'cjs'
const isBundlerESMBuild = buildName === 'mjs'
const isProductionBuild = /\.prod\.js$/.test(output.file)
const isGlobalBuild = format === 'global'
const isRawESMBuild = format === 'esm'
const isNodeBuild = format === 'cjs'
const isBundlerESMBuild = /esm-bundler/.test(format)

if (isGlobalBuild) output.name = 'VueRouter'

Expand Down Expand Up @@ -128,20 +122,6 @@ function createConfig(buildName, output, plugins = []) {
),
...nodePlugins,
...plugins,
{
async writeBundle() {
const stub = stubs[output.file]
if (!stub) return

const contents =
buildName === 'cjs'
? `module.exports = require('../${output.file}')`
: `export * from '../${output.file}'`

await fsp.writeFile(path.resolve(__dirname, `dist/${stub}`), contents)
console.log(`created stub ${require('chalk').bold(`dist/${stub}`)}`)
},
},
],
output,
// onwarn: (msg, warn) => {
Expand Down Expand Up @@ -194,10 +174,8 @@ function createReplacePlugin(
}

function createProductionConfig(format) {
const extension = format === 'cjs' ? 'cjs' : 'js'
const descriptor = format === 'cjs' ? '' : `.${format}`
return createConfig(format, {
file: `dist/${name}${descriptor}.prod.${extension}`,
file: `dist/${name}.${format}.prod.js`,
format: outputConfigs[format].format,
})
}
Expand Down

0 comments on commit 09ddcbe

Please sign in to comment.