mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-14 16:52:26 +08:00
116 lines
3.1 KiB
JavaScript
116 lines
3.1 KiB
JavaScript
const path = require('path');
|
|
const fs = require('fs');
|
|
|
|
// Test dist build:
|
|
// Double-triple check all the packages
|
|
// and files are good to go before publishing
|
|
[
|
|
// core
|
|
{
|
|
files: [
|
|
'../core/css/core.css',
|
|
'../core/css/core.css.map',
|
|
'../core/css/normalize.css',
|
|
'../core/css/normalize.css.map',
|
|
'../core/components/index.js',
|
|
'../core/components/index.d.ts',
|
|
'../core/components/package.json',
|
|
'../core/dist/index.js',
|
|
'../core/dist/ionic/index.esm.js',
|
|
]
|
|
},
|
|
// hydrate
|
|
{
|
|
files: [
|
|
'../core/hydrate/index.js',
|
|
'../core/hydrate/index.d.ts',
|
|
'../core/hydrate/package.json'
|
|
]
|
|
},
|
|
// angular
|
|
{
|
|
files: [
|
|
'../angular/dist/schematics/collection.json',
|
|
'../angular/dist/fesm5/ionic-angular.js',
|
|
'../angular/dist/fesm2015/ionic-angular.js',
|
|
'../angular/dist/ionic-angular.d.ts',
|
|
'../angular/dist/ionic-angular.metadata.json'
|
|
]
|
|
},
|
|
// angular-server
|
|
{
|
|
files: [
|
|
'../packages/angular-server/dist/fesm5/ionic-angular-server.js',
|
|
'../packages/angular-server/dist/fesm2015/ionic-angular-server.js',
|
|
'../packages/angular-server/dist/ionic-angular-server.d.ts',
|
|
'../packages/angular-server/dist/ionic-angular-server.metadata.json'
|
|
]
|
|
},
|
|
// react
|
|
{
|
|
files: ['../packages/react/dist/index.js']
|
|
},
|
|
// react-router
|
|
{
|
|
files: ['../packages/react-router/dist/index.js']
|
|
}
|
|
].forEach(testPackage);
|
|
|
|
function testPackage(testPkg) {
|
|
if (testPkg.packageJson) {
|
|
const pkgDir = path.dirname(testPkg.packageJson);
|
|
const pkgJson = require(testPkg.packageJson);
|
|
|
|
if (!pkgJson.name) {
|
|
throw new Error('missing package.json name: ' + testPkg.packageJson);
|
|
}
|
|
|
|
if (!pkgJson.main) {
|
|
throw new Error('missing package.json main: ' + testPkg.packageJson);
|
|
}
|
|
|
|
const pkgPath = path.join(pkgDir, pkgJson.main);
|
|
const pkgImport = require(pkgPath);
|
|
|
|
if (testPkg.files) {
|
|
if (!Array.isArray(pkgJson.files)) {
|
|
throw new Error(testPkg.packageJson + ' missing "files" property');
|
|
}
|
|
testPkg.files.forEach(testPkgFile => {
|
|
if (!pkgJson.files.includes(testPkgFile)) {
|
|
throw new Error(testPkg.packageJson + ' missing file ' + testPkgFile);
|
|
}
|
|
|
|
const filePath = path.join(__dirname, pkgDir, testPkgFile);
|
|
fs.accessSync(filePath);
|
|
});
|
|
}
|
|
|
|
if (pkgJson.module) {
|
|
const moduleIndex = path.join(__dirname, pkgDir, pkgJson.module);
|
|
fs.accessSync(moduleIndex);
|
|
}
|
|
|
|
if (pkgJson.types) {
|
|
const pkgTypes = path.join(__dirname, pkgDir, pkgJson.types);
|
|
fs.accessSync(pkgTypes);
|
|
}
|
|
|
|
if (testPkg.exports) {
|
|
testPkg.exports.forEach(exportName => {
|
|
const m = pkgImport[exportName];
|
|
if (!m) {
|
|
throw new Error('export "' + exportName + '" not found in: ' + testPkg.packageJson);
|
|
}
|
|
});
|
|
}
|
|
} else if (testPkg.files) {
|
|
testPkg.files.forEach(file => {
|
|
const filePath = path.join(__dirname, file);
|
|
fs.statSync(filePath);
|
|
});
|
|
}
|
|
}
|
|
|
|
console.log(`✅ test.dist`);
|