Proper .gitignore file for a Neos Flow project? - flow-framework

I recently created a new project using composer create-project --keep-vcs neos/flow-base-distribution ProjectName and I'm a bit confused by the .gitignore file it produces:
/Build/
/Configuration/
/Data/
/Packages/
/Web/
/bin/
/Readme.rst
/Upgrading.rst
/flow
/flow.bat
It basically throws out almost every file from the VCS, including the entirety of the Packages/Application folder, where I assumed most of my code would go. So what gives? Why is the .gitignore file so broad?

I don't have previous experience in neos-flow but I installed it with the help of composer on two different computers with Ubuntu OS.
My .gitignore file output is same like your output both time.
/Build/
/Configuration/
/Data/
/Packages/
/Web/
/bin/
/Readme.rst
/Upgrading.rst
/flow
/flow.bat
The Original structure of my project is
. .. .editorconfig .git .github .gitignore Build Configuration Data Packages Readme.rst Web bin composer.json composer.lock flow flow.bat
When i remove all folders and files as declared in .gitignore then my project structure is like this
. .. .editorconfig .git .github .gitignore composer.json composer.lock
As you know, The purpose of the .gitignore file is to allow you to ignore files, such as editor backup files, build products or local configuration overrides that you never want to commit into a repository.
I think that neos-flow just need those files that are remaining after applying .gitignore.
Those are composer.json and composer.lock
The purpose of composer.json is that it shows the details about the project like name, description, license information.
And composer.lock shows all packages, and dependencies for the project, their name, detail and url for downloading the package.
The content of composer.json
{
"name": "neos/flow-base-distribution",
"description": "Flow Base Distribution",
"license": "MIT",
"support": {
"email": "hello#neos.io",
"slack": "http://slack.neos.io/",
"forum": "https://discuss.neos.io/",
"wiki": "https://discuss.neos.io/c/the-neos-project/project-documentation",
"issues": "https://github.com/neos/flow-development-collection/issues",
"docs": "https://flowframework.readthedocs.io/",
"source": "https://github.com/neos/flow-base-distribution"
},
"config": {
"vendor-dir": "Packages/Libraries",
"bin-dir": "bin"
},
"require": {
"neos/flow": "~6.0.0",
"neos/welcome": "~6.0.0"
},
"require-dev": {
"neos/kickstarter": "~6.0.0",
"neos/buildessentials": "~6.0.0",
"neos/behat": "dev-master",
"phpunit/phpunit": "~8.1",
"mikey179/vfsstream": "~1.6"
},
"repositories": {
"distributionPackages": {
"type": "path",
"url": "./DistributionPackages/*"
}
},
"replace": {
"typo3/flow-base-distribution": "self.version"
},
"suggest": {
"ext-pdo_sqlite": "For running functional tests out-of-the-box this is required"
},
"scripts": {
"post-update-cmd": "Neos\\Flow\\Composer\\InstallerScripts::postUpdateAndInstall",
"post-install-cmd": "Neos\\Flow\\Composer\\InstallerScripts::postUpdateAndInstall",
"post-package-update": "Neos\\Flow\\Composer\\InstallerScripts::postPackageUpdateAndInstall",
"post-package-install": "Neos\\Flow\\Composer\\InstallerScripts::postPackageUpdateAndInstall"
}
}
First 70 lines of composer.lock
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is #generated automatically"
],
"content-hash": "06d49a77babbafa5a03d726865e61dc3",
"packages": [
{
"name": "composer/ca-bundle",
"version": "1.2.4",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
"reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
"reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"ext-pcre": "*",
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
"psr/log": "^1.0",
"symfony/process": "^2.5 || ^3.0 || ^4.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Composer\\CaBundle\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano#seld.be",
"homepage": "http://seld.be"
}
],
"description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
"keywords": [
"cabundle",
"cacert",
"certificate",
"ssl",
"tls"
],
"time": "2019-08-30T08:44:50+00:00"
}]}
The _readme key in composer.lock json shows the purpose of composer.lock
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is #generated automatically"
],
So in short your .gitignore is absolutely fine and accurate. I also install it on both my ubuntu computers and both are same.

There are two models of .gitignore under their repository:
https://github.com/neos/flow/blob/master/Resources/Private/Installer/Distribution/Defaults/.gitignore
/Build/
/Configuration/
/Data/
/Packages/
/Web/
/bin/
/Readme.rst
/Upgrading.rst
/flow
/flow.bat
https://github.com/neos/flow-development-distribution/blob/master/.gitignore
/Build/Behat/*
/Build/BuildEssentials
/Build/Reports
/Build/Resources
/Configuration/
/Data/
/Packages/
/Web/
/bin/
/Readme.txt
/Upgrading.txt
/Readme.rst
/Upgrading.rst
/flow
/flow.bat

As I am an avid Flow user, I can explain why the Packages/ directory is excluded:
As you can see in the composer.json, there is this section:
"repositories": {
"distributionPackages": {
"type": "path",
"url": "./DistributionPackages/*"
}
},
This tells composer to look for your own packages in the DistributionPackages/ directory. This is much cleaner than mixing own packages and dependencies in the Packages/ directory and also helps a bit with dependency management itself (since only the composer.json in your package directory needs to contain the package dependencies - i.e. no need to duplicate them in the root composer.json).
See https://docs.neos.io/cms/manual/dependency-management#the-path-repository-setup and https://www.neos.io/blog/project-repository-best-practice.html for more info about that (this not only applies to Neos site packages, but every project specific package).
As for the other excluded files: Since those get created by composer install, those don't need to be tracked by git.
Exception: You often want to include the Web/ directory (but exclude non-specific contents like Web/_Resources/ or Web/index.php) i.e. for the favicons or other static files needed in the web root.

Related

Why does electron-builder include my whole project folder in app.asar?

When I extract the app.asar inside the builded Mac app with:
npx asar extract app.asar destfolder
I can see that it includes mostly everything which is in my project folder.
How can I exclude the files from app.asar?
This are parts of my package.json: (because its too much code for stackoverflow)
"directories": {
"buildResources": "resources"
},
"extraResources": [
"./content/**",
"settings.json",
{
"from": "resources/icon.png",
"to": ""
},
{
"from": "resources/${os}",
"to": "../"
},
{
"from": "binaries/${os}",
"to": "binaries",
"filter": [
"**/*"
]
}
]
This is my project folder:
And this is the content of the builded app.asar file:
It seems I have to exclude every folder I dont want in the app.asar in the build section of the package.json like this:
"build": {
"files": [
"!binaries/**/*",
"!mac-build/**/*"
],

Where is the buildResources directory?

I'm adding an icon to my electron app, but I have no idea where the buildResources directory is!
I've looked everywhere, the out folder, the .git folder, but it seems to be nonexistent!
buildResources does not have a default value, so you must set it. You would set it in package.json, here's an example.
{
"name": "my-project",
"version": "0.0.1",
"description": "My desription.",
"main": "index.js",
"scripts": {
//... scripts
},
"build": {
"directories": {
"buildResources": "resources"
},
//... rest of properties
},
//... rest of file
}
Your project
app/
dist/
node_modules/
resources/
icon.ico
... other resources
package.json
webpack.config.js
//... other files/folders

electron-forge how to specify a source directory for packaging?

I've rigged create-react-app with the electron-forge app and now I need to somehow specify the build folder produced from the CRA for the packaging. That folder should also be served.
Would such a thing be possible with electron-forge?
I understand are you asking how to tell electron-forge which directory to find your source files in for packaging the app.
If so, see: https://github.com/electron-userland/electron-packager/blob/master/docs/api.md
where it describes the options of the
"config": {
"forge": {
object in your package.json file
inside they there is this package config object:
"electronPackagerConfig": {
"dir": "./src",
where you can specify your source folder.
Also, BTW: there you can specify files/file-regexs to be ignored in packaging:
"ignore": [".idea", ".gitignore"]
electron-forge has no option to specify input folder (project's root folder will be used):
Specify ignore option to skip folders/files;
Use main key in
package.json to specify correct start script.
For example, package.json for vue project:
{
"name": "project",
"version": "1.0.0",
"main": "index.js",
...
"config": {
"forge": {
"packagerConfig": {
"ignore": [
"^/[.]vs$",
"^/public$",
"^/src$",
"^/[.]browserslistrc$",
"^/[.]editorconfig$",
"^/tsconfig[.]json$",
"[.](cmd|user|DotSettings|njsproj|sln)$"
]
},
...
}
},
...
}

not working the change of bower's default components folder

I have tired to change bower default folder. I have created two files
1. .bowerrc.json
2. bower.json
The content of .bowerrc.json file
{
"directory": "Vendors"
}
and the content of bower.json file
{
"name": "Sardar",
"description": "Human Resource Management System",
"main": "index.html",
"moduleType": [],
"keywords": [
"AngularJS"
],
"authors": [
"Md. Shohel Rana"
],
"license": "Restrict",
"homepage": "",
"private": true,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"dependencies": {
"jquery": "^2.2.0"
}
}
Both are same root. when I run the command bower install that installs everything in a folder named bower_components. but need install into Vendors folder that is not working. Thanks for the time being.
just remove .json extension from the file .bowerrc.json
and again run bower install

Installing SpeckPaypal Module into ZF2

I am having issues with installing this module into ZF2 via composer. I have edited the composer.json file that comes with zend framework 2 but it won't install when I run the command php composer.phar install.
Here is what my composer.json file looks like:
"name": "speckcommerce/speck-paypal",
"description": "A generic module for adding PayPal support to a ZF2 application.",
"type": "library",
"keywords": [
"zf2"
],
"homepage": "http://github.com/speckcommerce/SpeckPaypal",
"authors": [
{
"name": "Stephen Rhoades",
"email": "steve#stephenrhoades.com",
"homepage": "http://www.stephenrhoades.com"
}
],
"require": {
"php": ">=5.4",
"zendframework/zendframework": "2.*"
},
"autoload": {
"psr-0": {
"SpeckPaypal": "src/"
},
"classmap": [
"./"
]
}
The source can be found at: https://github.com/speckcommerce/SpeckPaypal
Thanks!
You are supposed to
composer require speckcommerce/speck-paypal:dev-master
from your project root. The composer.json from the SpeckPaypal Module won't help you there :D
Dunno if you are still struggling with this; but it appears that speck's composer json is not quite correct.
The accepted structure for a ZF2 module leaves module.php outside the scope of the standard psr-0 autoloader; most modules define ./Module.php in their classmap section see https://github.com/zendframework/ZendDeveloperTools/blob/master/composer.json as an example.

Resources