Aragon UI is the interface toolkit used by Aragon and its related projects.
Aragon UI is a library that comes with some assets, like fonts or images. These need to be copied where Aragon UI can access them.
This emplacement can then be communicated to Aragon UI using the global
component <AragonApp />
:
import { AragonApp } from '@aragon/ui'
const App = () => (
<AragonApp publicUrl="/">
{/* Your app goes here */}
</AragonApp>
)
To get the path of the directory from where the assets need to be copied, use
path.dirname(require.resolve('@aragon/ui'))
.
If you're using create-react-app
or react-scripts
,
you can copy over the contents of module's dist/
folder (i.e.
path.dirname(require.resolve('@aragon/ui'))
) to
a public/aragon-ui
folder in your app and then use publicUrl="/aragon-ui/
.
You may also want to add this sync step to your build scripts, in case you later upgrade this package (make sure to `npm i -D sync-assets first):
"scripts": {
"sync-assets": "sync-files $(dirname $(node -p 'require.resolve(\"@aragon/ui\")')) public/aragon-ui",
"build": "npm run sync-assets && react-scripts build",
"start": "npm run sync-assets && react-scripts start"
}
If you have your own webpack configuration, a way to copy this package's assets is to use the Copy Webpack Plugin:
module.exports = {
/* … */
plugins: [
new CopyWebpackPlugin([
{
from: path.dirname(require.resolve('@aragon/ui')),
to: path.resolve(
path.join(__dirname, 'dist/public')
),
},
]),
]
}
For webpack DevServer, add
the Aragon UI directory to the contentBase
array, without having to copy it:
module.exports = {
/* … */
devServer: {
contentBase: [
path.dirname(require.resolve('@aragon/ui')),
path.join(__dirname, 'public'),
],
},
}
Install the dependencies:
npm install
Build Aragon UI:
npm run build # or "npm run dev" to rebuild when a file has changed
Run the gallery:
npm start
Open http://localhost:8080/ in your web browser.