diff --git a/build/terse-cssr.js b/build/terse-cssr.js deleted file mode 100644 index 8190391fb..000000000 --- a/build/terse-cssr.js +++ /dev/null @@ -1,17 +0,0 @@ -const fs = require('fs').promises -const path = require('path') -const terseCssr = require('./utils/terse-cssr.js') -const { walk } = require('../scripts/utils') - -const dirs = ['es', 'lib'].map((d) => path.resolve(__dirname, '..', d)) - -;(async () => { - for (const dir of dirs) { - for await (const p of walk(dir)) { - if (p.includes('.cssr.js')) { - const code = await fs.readFile(p, 'utf-8') - await fs.writeFile(p, terseCssr(code)) - } - } - } -})() diff --git a/package.json b/package.json index 1c505f049..1ff9ea272 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,9 @@ "scripts": { "start": "npm run dev", "deprecated:build:icons": "npm run clean && node build/build-icons.js", - "build:js": "npm run gen-version && npm run clean && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && node build/terse-cssr.js", - "build:package": "npm run gen-version && npm run clean && node build/build-icons.js && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && node build/terse-cssr.js", - "build:site": "./build/before-build-site.sh && node build/restore-side-effects.js && cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=4096 vite build && rm -rf node_modules/naive-ui && cp site/index.html site/404.html && node build/clear-side-effects.js", - "build:doc": "npm run gen-version && npm run build && rm -rf build-doc/dist && cross-env NODE_ENV=production webpack --config build/webpack.doc.js", + "build:js": "npm run gen-version && npm run clean && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && node scripts/post-build", + "build:package": "npm run gen-version && npm run clean && node build/build-icons.js && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && node scripts/post-build", + "build:site": "./scripts/pre-build-site.sh && node build/restore-side-effects.js && cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=4096 vite build && rm -rf node_modules/naive-ui && cp site/index.html site/404.html && node build/clear-side-effects.js", "clean": "rm -rf site lib es node_modules/naive-ui", "dev": "npm run clean && npm run gen-version && cross-env NODE_ENV=development vite", "dev:ts": "npm run clean && npm run gen-version && cross-env NODE_ENV=development TUSIMPLE=true vite", diff --git a/scripts/post-build.js b/scripts/post-build.js new file mode 100644 index 000000000..c5d29f23d --- /dev/null +++ b/scripts/post-build.js @@ -0,0 +1,10 @@ +// terse cssr +const { terseCssr } = require('./terse-cssr') + +// replace __DEV__ +const { replaceDefine } = require('./replace-define') + +;(async () => { + await terseCssr() + await replaceDefine() +})() diff --git a/build/before-build-site.sh b/scripts/pre-build-site.sh similarity index 100% rename from build/before-build-site.sh rename to scripts/pre-build-site.sh diff --git a/scripts/replace-define.js b/scripts/replace-define.js new file mode 100644 index 000000000..687650447 --- /dev/null +++ b/scripts/replace-define.js @@ -0,0 +1,30 @@ +const fs = require('fs').promises +const { walk, outDirs } = require('./utils') + +const alias = { + __DEV__: "process.env.NODE_ENV !== 'production'" +} + +exports.replaceDefine = async () => { + const aliasKeys = Object.keys(alias) + const patterns = {} + aliasKeys.forEach((key) => { + patterns[key] = new RegExp(key, 'g') + }) + for (const dir of outDirs) { + for await (const p of walk(dir)) { + const code = await fs.readFile(p, 'utf-8') + for (const key of aliasKeys) { + const pattern = patterns[key] + if (pattern.test(code)) { + const outCode = code.replace(pattern, alias[key]) + await fs.writeFile(p, outCode) + } + } + } + } +} + +if (require.main === module) { + exports.replaceDefine() +} diff --git a/scripts/terse-cssr.js b/scripts/terse-cssr.js new file mode 100644 index 000000000..2593ae401 --- /dev/null +++ b/scripts/terse-cssr.js @@ -0,0 +1,18 @@ +const fs = require('fs').promises +const terseCssr = require('../build/utils/terse-cssr.js') +const { walk, outDirs } = require('./utils') + +exports.terseCssr = async () => { + for (const dir of outDirs) { + for await (const p of walk(dir)) { + if (p.includes('.cssr.js')) { + const code = await fs.readFile(p, 'utf-8') + await fs.writeFile(p, terseCssr(code)) + } + } + } +} + +if (require.main === module) { + exports.terseCssr() +} diff --git a/scripts/utils.js b/scripts/utils.js index 36550323a..090166702 100644 --- a/scripts/utils.js +++ b/scripts/utils.js @@ -8,3 +8,5 @@ exports.walk = async function * walk (dir) { else if (d.isFile()) yield entry } } + +exports.outDirs = ['es', 'lib'].map((d) => path.resolve(__dirname, '..', d)) diff --git a/vue3.md b/vue3.md index 67e176077..1e075c8d7 100644 --- a/vue3.md +++ b/vue3.md @@ -434,7 +434,9 @@ ## Build -package: tsx => es|lib => terse cssr => release site: build package => move to node_modules => setup side effects => vite build +package: tsx => es|lib => terse cssr => replace global vars => release + +site: build package => move to node_modules => setup side effects => vite build => release ## Info