update parcel

This commit is contained in:
Harvey committed 2022-04-28 11:47:50 +08:00
1 parent bf342975db
commit 810266c44e
7 files changed
+12 -4261

No files matched your search

+9 -7
View File
@@ -1,5 +1,4 @@
import fs from 'fs';
import path from 'path';
import inquirer from 'inquirer';
import projects from './projects.js';
import { Parcel } from '@parcel/core';
@@ -12,12 +11,14 @@ async function develop(name) {
entries: `${projects[name]}/src/index.js`,
defaultConfig: '@parcel/config-default',
mode: 'production',
targets: ['main'],
defaultTargetOptions: {
sourceMaps: false,
outputFormat: 'global',
engines: {
browsers: ['last 1 Chrome version'],
targets: {
main: {
distDir: `${projects[name]}/dist`,
sourceMap: false,
outputFormat: 'global',
engines: {
browsers: ['last 1 Chrome version'],
},
},
},
env: {
@@ -30,6 +31,7 @@ async function develop(name) {
try {
const { bundleGraph, buildTime } = await bundler.run();
const bundles = bundleGraph.getBundles();
fs.renameSync(`${projects[name]}/dist/index.js`, `${projects[name]}/dist/${name}.js`);
console.log(`✨ Built ${bundles.length} bundles in ${buildTime}ms!`);
} catch (err) {
console.log(err.diagnostics);
-23
View File
@@ -1,23 +0,0 @@
const cpy = require('cpy');
const logger = require('./logger');
module.exports = (opts = {}) => ({
name: 'copyAfterBuild',
generateBundle(outputOptions, bundle, isWrite) {
if (!isWrite) {
logger.fatal('copyAfterBuild currently only works with bundles that are written to disk');
}
if (opts.from && opts.to) {
setTimeout(() => {
cpy(opts.from, opts.to)
.then(() => {
logger.success(`${opts.from} successfully copied to ${opts.to}`);
})
.catch(() => {
logger.fatal('File copy failed!');
});
}, 200);
}
},
});
-104
View File
@@ -1,104 +0,0 @@
const fs = require('fs');
const path = require('path');
const { babel } = require('@rollup/plugin-babel');
const commonjs = require('@rollup/plugin-commonjs');
const { nodeResolve } = require('@rollup/plugin-node-resolve');
const postcss = require('rollup-plugin-postcss');
const { eslint } = require('rollup-plugin-eslint');
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');
const replace = require('@rollup/plugin-replace');
const svgo = require('rollup-plugin-svgo');
const { terser } = require('rollup-plugin-terser');
const copyAfterBuild = require('./copyAfterBuild');
const removeHtmlSpace = require('./removeHtmlSpace');
const json = require('@rollup/plugin-json');
module.exports = function creatRollupConfig(projectPath) {
const packageJson = JSON.parse(fs.readFileSync(path.join(projectPath, 'package.json'), 'utf-8'));
const { version, homepage, name, expose } = packageJson;
const isProd = process.env.NODE_ENV === 'production';
const banner =
'/*!\n' +
` * ${name}.js v${version}\n` +
` * Github: ${homepage}\n` +
` * (c) 2017-${new Date().getFullYear()} Harvey Zack\n` +
' * Released under the MIT License.\n' +
' */\n';
return {
input: path.join(projectPath, 'src/index.js'),
output: {
name: expose,
file: isProd
? path.join(projectPath, `dist/${name}.js`)
: path.join(process.cwd(), `docs/uncompiled/${name}.js`),
format: 'umd',
sourcemap: isProd ? false : true,
},
watch: {
exclude: ['node_modules/**', 'packages/**/node_modules/**'],
},
plugins: [
json({
exclude: ['node_modules/**', 'packages/**/node_modules/**'],
}),
eslint({
exclude: [
'node_modules/**',
'packages/*/src/**/*.scss',
'packages/*/src/**/*.svg',
'packages/*/src/**/*.json',
],
}),
postcss({
plugins: [
autoprefixer(),
cssnano({
preset: [
'default',
{
calc: false,
},
],
}),
],
sourceMap: isProd ? false : true,
extract: false,
}),
nodeResolve(),
commonjs(),
babel({
babelHelpers: 'runtime',
exclude: ['node_modules/**', 'packages/**/node_modules/**'],
presets: [['@babel/env', { modules: false }]],
plugins: ['@babel/plugin-external-helpers', '@babel/plugin-transform-runtime'],
}),
svgo({
raw: true,
}),
replace({
preventAssignment: true,
exclude: 'node_modules/**',
__ENV__: process.env.NODE_ENV || 'development',
__VERSION__: version,
__BUILD__: Date.now(),
}),
isProd && removeHtmlSpace(),
isProd &&
terser({
output: {
preamble: banner,
comments: function () {
return false;
},
},
}),
isProd &&
copyAfterBuild({
from: path.join(projectPath, 'dist/*'),
to: path.join(process.cwd(), 'dist'),
}),
],
};
};
-27
View File
@@ -1,27 +0,0 @@
import chalk from 'chalk';
import { format } from 'util';
const prefix = 'artplayer-cli';
const sep = chalk.gray('·');
export function log(...args) {
const msg = format.apply(format, args);
console.log(chalk.white(prefix), sep, msg);
}
export function fatal(...args) {
if (args[0] instanceof Error) args[0] = args[0].message.trim();
const msg = format.apply(format, args);
console.error(chalk.red(prefix), sep, msg);
process.exit(1);
}
export function success(...args) {
const msg = format.apply(format, args);
console.log(chalk.green(prefix), sep, msg);
}
export function warn(...args) {
const msg = format.apply(format, args);
console.log(chalk.yellow(prefix), sep, msg);
}
-8
View File
@@ -1,8 +0,0 @@
module.exports = () => ({
name: 'removeHtmlSpace',
transform(code) {
return {
code: code.replace(/\\n*\s*</g, '<').replace(/>\\n*\s*/g, '>'),
};
},
});