Skip to content

Commit c5f4a9c

Browse files
authored
Merge pull request #57 from uicrooks/dev
v2.4.15
2 parents a8bf95e + 5954afd commit c5f4a9c

File tree

3 files changed

+19
-103
lines changed

3 files changed

+19
-103
lines changed

README.md

Lines changed: 9 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ Shopify Theme Lab is a customizable modular development environment for blazing-
5454
- [Bulma](#bulma)
5555
- [Swapping JavaScript framework](#swapping-javascript-framework)
5656
- [Removing Vue](#removing-vue)
57-
- [React](#react)
57+
- [Alpine.js](#alpinejs)
5858
- [Project structure](#project-structure)
5959
- [Tasks](#tasks)
6060
- [Development environment concepts](#development-environment-concepts)
@@ -95,7 +95,7 @@ Shopify Theme Lab is a customizable modular development environment for blazing-
9595
- JavaScript
9696
- [Vue](https://vuejs.org)
9797
- [Vuex](https://vuex.vuejs.org)
98-
- Swap Vue with any other framework e.g. [React](https://reactjs.org)
98+
- Swap Vue with any other framework e.g. [Alpine.js](https://github.com/alpinejs/alpine)
9999
- [Axios](https://github.com/axios/axios)
100100
- Extend with [npm packages](https://www.npmjs.com) 📦
101101
- CSS
@@ -443,108 +443,24 @@ module: {
443443
}
444444
```
445445

446-
### React
446+
### Alpine.js
447+
If you want to use something lighter than Vue, a good alternative is [Alpine.js](https://github.com/alpinejs/alpine).
447448

448-
1. Install packages:
449+
1. Install package:
449450

450451
#### npm
451452
```sh
452-
$ npm install react react-dom
453-
$ npm install @babel/preset-react --save-dev
453+
$ npm install alpinejs
454454
```
455455

456456
#### yarn
457457
```sh
458-
$ yarn add react react-dom
459-
$ yarn add @babel/preset-react --dev
458+
$ yarn add alpinejs
460459
```
461460

462-
2. Inside [webpack.common.js](.config/webpack/webpack.common.js):
461+
2. Import `alpinejs` in [main.js](src/main.js):
463462
```js
464-
...
465-
resolve: {
466-
extensions: [... '.jsx'] // add jsx to extensions array
467-
}
468-
...
469-
```
470-
471-
```js
472-
...
473-
module: {
474-
rules: [
475-
// add babel-loader for jsx,
476-
// remove the same loader from webpack.prod.js
477-
{
478-
test: /\.(js|jsx)$/,
479-
loader: 'babel-loader',
480-
exclude: /node_modules/,
481-
options: {
482-
presets: [ '@babel/preset-env', '@babel/preset-react' ]
483-
}
484-
},
485-
...
486-
]
487-
}
488-
...
489-
```
490-
491-
3. Add ecmaFeatures to [.eslint.js](config/.eslint.js):
492-
```js
493-
...
494-
parserOptions: {
495-
ecmaVersion: 2020,
496-
sourceType: 'module',
497-
ecmaFeatures: { // add ecmaFeatures
498-
jsx: true,
499-
modules: true
500-
}
501-
}
502-
...
503-
```
504-
505-
4. Add following code to [main.js](src/main.js):
506-
```js
507-
// eslint-disable-next-line
508-
import React from 'react'
509-
import { render } from 'react-dom'
510-
511-
/**
512-
* react components
513-
* auto-map all react components to dom elements
514-
*/
515-
const reactComponents = require.context('./react/components/', true, /\.(jsx|js)$/)
516-
517-
reactComponents.keys().forEach(key => {
518-
const Component = reactComponents(key).default
519-
520-
// transform file name to PascalCase
521-
const name = key.replace(/\.(\/|jsx|js)/g, '').replace(/(\/|-|_|\s)\w/g, (match) => match.slice(1).toUpperCase())
522-
523-
const domElement = document.querySelector(`[react-component='${name}']`)
524-
render(<Component/>, domElement)
525-
})
526-
```
527-
528-
5. Create `src/react/components/MyComponent.jsx` with following content:
529-
```js
530-
import React from 'react'
531-
532-
class MyComponent extends React.Component {
533-
render() {
534-
return(
535-
<div>
536-
My Component
537-
</div>
538-
)
539-
}
540-
}
541-
542-
export default MyComponent
543-
```
544-
545-
6. Add a dom element to [theme.liquid](shopify/layout/theme.liquid) or any other `.liquid` file:
546-
```html
547-
<div react-component="MyComponent"></div>
463+
import 'alpinejs'
548464
```
549465
<!-- swapping javascript framework (end) -->
550466

package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "shopify-theme-lab",
33
"description": "Customizable modular development environment for blazing-fast Shopify theme creation",
44
"author": "Sergej Samsonenko <contact@sergej.codes>",
5-
"version": "2.4.14",
5+
"version": "2.4.15",
66
"license": "MIT",
77
"config": {
88
"reloadr": {
@@ -44,7 +44,7 @@
4444
"babel-loader": "^8.2.2",
4545
"clean-webpack-plugin": "^3.0.0",
4646
"cross-env": "^7.0.3",
47-
"css-loader": "^5.1.2",
47+
"css-loader": "^5.1.3",
4848
"css-minimizer-webpack-plugin": "^1.3.0",
4949
"eslint": "^7.22.0",
5050
"eslint-plugin-vue": "^7.7.0",
@@ -65,7 +65,7 @@
6565
"url-loader": "^4.1.1",
6666
"vue-loader": "^15.9.6",
6767
"vue-template-compiler": "^2.6.12",
68-
"webpack": "^5.25.1",
68+
"webpack": "^5.26.2",
6969
"webpack-cli": "^4.5.0",
7070
"webpack-merge": "^5.7.3"
7171
}

0 commit comments

Comments
 (0)