Skip to content

Commit

Permalink
Revert "feat(cli): add monorepo and Yarn PnP support (#1418)"
Browse files Browse the repository at this point in the history
This reverts commit 4b81641.
  • Loading branch information
rschristian authored May 19, 2021
1 parent a5fc80b commit 065fcc9
Show file tree
Hide file tree
Showing 10 changed files with 68 additions and 155 deletions.
25 changes: 0 additions & 25 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,36 +44,11 @@ jobs:
LIGHTHOUSE_CHROMIUM_PATH: 'which google-chrome-stable'
run: npm run test

pnpTest:
name: PnPTest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 1

- uses: actions/setup-node@v1
with:
node-version: 12.x

- name: Run PnP test
run: |
git clone https://github.com/preactjs-templates/default.git default
cd default/template
touch yarn.lock
echo $(cat package.json | jq '.name = "pnp-test"') > package.json
yarn set version 2
yarn config set pnpFallbackMode none
yarn config set compressionLevel 0
yarn link -A -p ../..
yarn build
ci-success:
name: ci
if: ${{ success() }}
needs:
- test
- pnpTest
runs-on: ubuntu-latest
steps:
- name: CI succeeded
Expand Down
10 changes: 10 additions & 0 deletions packages/cli/lib/commands/build.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const rimraf = require('rimraf');
const { resolve } = require('path');
const { promisify } = require('util');
const { isDir, error } = require('../util');
const runWebpack = require('../lib/webpack/run-webpack');
const { validateArgs } = require('./validate-args');

Expand Down Expand Up @@ -93,6 +94,15 @@ async function command(src, argv) {
argv.production = toBool(argv.production);

let cwd = resolve(argv.cwd);
let modules = resolve(cwd, 'node_modules');

if (!isDir(modules)) {
return error(
'No `node_modules` found! Please run `npm install` before continuing.',
1
);
}

if (argv.clean === void 0) {
let dest = resolve(cwd, argv.dest);
await promisify(rimraf)(dest);
Expand Down
9 changes: 5 additions & 4 deletions packages/cli/lib/lib/webpack/prerender.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,11 @@ module.exports = function (env, params) {
return '';
}
const { cwd } = env;
const preact = require(require.resolve('preact', { paths: [cwd] }));
const renderToString = require(require.resolve('preact-render-to-string', {
paths: [cwd],
}));

const preact = require(require.resolve(`${cwd}/node_modules/preact`));
const renderToString = require(require.resolve(
`${cwd}/node_modules/preact-render-to-string`
));
return renderToString(preact.h(app, { ...params, url }));
} catch (err) {
let stack = stackTrace.parse(err).filter(s => s.getFileName() === entry)[0];
Expand Down
5 changes: 2 additions & 3 deletions packages/cli/lib/lib/webpack/proxy-loader.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
var utils = require('loader-utils');
var requireRelative = require('require-relative');

function proxyLoader(source, map) {
var options = utils.getOptions(this);
Expand All @@ -16,9 +17,7 @@ function proxyLoader(source, map) {

var loader;
try {
loader = require(require.resolve(proxyOptions.loader, {
paths: [proxyOptions.cwd],
}));
loader = requireRelative(proxyOptions.loader, proxyOptions.cwd);
} catch (e) {
loader = require(proxyOptions.loader);
}
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/lib/lib/webpack/render-html-plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ module.exports = async function (config) {
: resolve(dest, url.substring(1), 'index.html');
return Object.assign(values, {
filename,
template: `!!${require.resolve('ejs-loader')}?esModule=false!${template}`,
template: `!!ejs-loader?esModule=false!${template}`,
minify: isProd && {
collapseWhitespace: true,
removeScriptTypeAttributes: true,
Expand Down
5 changes: 1 addition & 4 deletions packages/cli/lib/lib/webpack/transform-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -288,10 +288,7 @@ class WebpackConfigHelpers {
} catch (e) {}

let templatePath = isPath
? `!!${require.resolve('ejs-loader')}?esModule=false!${resolve(
this._cwd,
template
)}`
? `!!ejs-loader?esModule=false!${resolve(this._cwd, template)}`
: template;
let { plugin: htmlWebpackPlugin } = this.getPluginsByName(
config,
Expand Down
9 changes: 4 additions & 5 deletions packages/cli/lib/lib/webpack/utils.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
const resolveFrom = require('resolve-from');

function isInstalledVersionPreactXOrAbove(cwd) {
try {
return (
parseInt(
require(require.resolve('preact/package.json', { paths: [cwd] }))
.version,
10
) >= 10
parseInt(require(resolveFrom(cwd, 'preact/package.json')).version, 10) >=
10
);
} catch (e) {}
return false;
Expand Down
93 changes: 35 additions & 58 deletions packages/cli/lib/lib/webpack/webpack-base-config.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
const webpack = require('webpack');
const path = require('path');
const { resolve, dirname } = require('path');
const { resolve } = require('path');
const { readFileSync, existsSync } = require('fs');
const { isInstalledVersionPreactXOrAbove } = require('./utils');
const autoprefixer = require('autoprefixer');
const browserslist = require('browserslist');
const requireRelative = require('require-relative');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const FixStyleOnlyEntriesPlugin = require('webpack-fix-style-only-entries');
const ProgressBarPlugin = require('progress-bar-webpack-plugin');
const ReplacePlugin = require('webpack-plugin-replace');
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const createBabelConfig = require('../babel-config');
const loadPostcssConfig = require('postcss-load-config');
const PnpWebpackPlugin = require(`pnp-webpack-plugin`);

function readJson(file) {
try {
Expand Down Expand Up @@ -96,16 +96,9 @@ module.exports = function (env) {

let compat = 'preact-compat';
try {
compat = dirname(
require.resolve('preact/compat/package.json', { paths: [cwd] })
);
} catch (e) {
try {
compat = dirname(
require.resolve('preact-compat/package.json', { paths: [cwd] })
);
} catch (e) {}
}
requireRelative.resolve('preact/compat', cwd);
compat = 'preact/compat';
} catch (e) {}

let tsconfig = resolveTsconfig(cwd, isProd);

Expand All @@ -117,14 +110,6 @@ module.exports = function (env) {
postcssPlugins = [autoprefixer({ overrideBrowserslist: browsers })];
}

function tryResolveOptionalLoader(name) {
try {
return require.resolve(name);
} catch (e) {
return name;
}
}

return {
context: src,

Expand All @@ -145,23 +130,21 @@ module.exports = function (env) {
'.css',
'.wasm',
],
alias: {
style: source('style'),
'preact-cli-entrypoint': source('index'),
url: dirname(require.resolve('native-url/package.json')),
// preact-compat aliases for supporting React dependencies:
react: compat,
'react-dom': compat,
'preact-compat': compat,
'react-addons-css-transition-group': 'preact-css-transition-group',
'preact-cli/async-component': IS_SOURCE_PREACT_X_OR_ABOVE
? require.resolve('@preact/async-loader/async')
: require.resolve('@preact/async-loader/async-legacy'),
},
plugins: [
// TODO: Remove when upgrading to webpack 5
PnpWebpackPlugin,
],
alias: Object.assign(
{
style: source('style'),
'preact-cli-entrypoint': source('index'),
url: 'native-url',
// preact-compat aliases for supporting React dependencies:
react: compat,
'react-dom': compat,
'react-addons-css-transition-group': 'preact-css-transition-group',
'preact-cli/async-component': IS_SOURCE_PREACT_X_OR_ABOVE
? require.resolve('@preact/async-loader/async')
: require.resolve('@preact/async-loader/async-legacy'),
},
compat !== 'preact-compat' ? { 'preact-compat': compat } : {}
),
},

resolveLoader: {
Expand All @@ -179,7 +162,7 @@ module.exports = function (env) {
test: /\.m?[jt]sx?$/,
resolve: { mainFields: ['module', 'jsnext:main', 'browser', 'main'] },
type: 'javascript/auto',
loader: require.resolve('babel-loader'),
loader: 'babel-loader',
options: Object.assign(
{ babelrc: false },
createBabelConfig(env, { browsers }),
Expand All @@ -192,10 +175,10 @@ module.exports = function (env) {
test: /\.less$/,
use: [
{
loader: require.resolve('./proxy-loader'),
loader: 'proxy-loader',
options: {
cwd,
loader: tryResolveOptionalLoader('less-loader'),
loader: 'less-loader',
options: {
sourceMap: true,
lessOptions: {
Expand All @@ -212,10 +195,10 @@ module.exports = function (env) {
test: /\.s[ac]ss$/,
use: [
{
loader: require.resolve('./proxy-loader'),
loader: 'proxy-loader',
options: {
cwd,
loader: tryResolveOptionalLoader('sass-loader'),
loader: 'sass-loader',
options: getSassConfiguration(...nodeModules),
},
},
Expand All @@ -227,10 +210,10 @@ module.exports = function (env) {
test: /\.styl$/,
use: [
{
loader: require.resolve('./proxy-loader'),
loader: 'proxy-loader',
options: {
cwd,
loader: tryResolveOptionalLoader('stylus-loader'),
loader: 'stylus-loader',
options: {
sourceMap: true,
paths: nodeModules,
Expand All @@ -244,11 +227,9 @@ module.exports = function (env) {
test: /\.(p?css|less|s[ac]ss|styl)$/,
include: [source('components'), source('routes')],
use: [
isWatch
? require.resolve('style-loader')
: MiniCssExtractPlugin.loader,
isWatch ? 'style-loader' : MiniCssExtractPlugin.loader,
{
loader: require.resolve('css-loader'),
loader: 'css-loader',
options: {
modules: {
localIdentName: '[local]__[hash:base64:5]',
Expand All @@ -258,7 +239,7 @@ module.exports = function (env) {
},
},
{
loader: require.resolve('postcss-loader'),
loader: 'postcss-loader',
options: {
ident: 'postcss',
sourceMap: true,
Expand All @@ -272,17 +253,15 @@ module.exports = function (env) {
test: /\.(p?css|less|s[ac]ss|styl)$/,
exclude: [source('components'), source('routes')],
use: [
isWatch
? require.resolve('style-loader')
: MiniCssExtractPlugin.loader,
isWatch ? 'style-loader' : MiniCssExtractPlugin.loader,
{
loader: require.resolve('css-loader'),
loader: 'css-loader',
options: {
sourceMap: true,
},
},
{
loader: require.resolve('postcss-loader'),
loader: 'postcss-loader',
options: {
ident: 'postcss',
sourceMap: true,
Expand All @@ -298,13 +277,11 @@ module.exports = function (env) {
},
{
test: /\.(xml|html|txt|md)$/,
loader: require.resolve('raw-loader'),
loader: 'raw-loader',
},
{
test: /\.(svg|woff2?|ttf|eot|jpe?g|png|webp|gif|mp4|mov|ogg|webm)(\?.*)?$/i,
loader: isProd
? require.resolve('file-loader')
: require.resolve('url-loader'),
loader: isProd ? 'file-loader' : 'url-loader',
},
],
},
Expand Down
23 changes: 4 additions & 19 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
"devDependencies": {
"html-looks-like": "^1.0.2",
"jest": "^26.0.1",
"less-loader": "^7.0.1",
"ncp": "^2.0.0",
"node-sass": "^4.12.0",
"p-retry": "^4.1.0",
Expand All @@ -58,26 +57,11 @@
"puppeteer": "^5.3.1",
"sass-loader": "^10.0.4",
"shelljs": "^0.8.3",
"sirv": "^1.0.0-next.2",
"stylus-loader": "^3.0.2"
"sirv": "^1.0.0-next.2"
},
"peerDependencies": {
"less-loader": "^7.0.1",
"preact": "*",
"preact-render-to-string": "*",
"sass-loader": "^10.0.0 || ^9.0.2",
"stylus-loader": "^3.0.2"
},
"peerDependenciesMeta": {
"less-loader": {
"optional": true
},
"sass-loader": {
"optional": true
},
"stylus-loader": {
"optional": true
}
"preact-render-to-string": "*"
},
"dependencies": {
"@babel/core": "^7.9.0",
Expand Down Expand Up @@ -123,14 +107,15 @@
"native-url": "0.3.4",
"optimize-css-assets-webpack-plugin": "^5.0.1",
"ora": "^4.0.3",
"pnp-webpack-plugin": "^1.6.4",
"postcss-load-config": "^2.1.0",
"postcss-loader": "^3.0.0",
"progress-bar-webpack-plugin": "^2.1.0",
"promise-polyfill": "^8.1.0",
"prompts": "^2.2.1",
"raw-loader": "^4.0.0",
"react-refresh": "0.8.3",
"require-relative": "^0.8.7",
"resolve-from": "^5.0.0",
"rimraf": "^3.0.2",
"sade": "^1.4.1",
"size-plugin": "^2.0.1",
Expand Down
Loading

0 comments on commit 065fcc9

Please sign in to comment.