What does ionic serve executes in ionic 2? - ionic-framework

I've been trying to add a gulp task to compile jade files I'm creating.
The tasks is working fine, however, when I run ionic serve it doesn't execute the gulp task I created
I assume that Ionic is using webpack, however I'd like to know what I need to do to make my new task work as well
The output I got is:
➜ ionic git:(master) ✗ ionic serve
∆ Compiling and bundling with Webpack...
√ Using your webpack.config.js file
∆ Compiling Sass to CSS
√ Matching patterns: app/theme/app.+(ios|md|wp).scss
∆ Copying fonts
√ Matching patterns: node_modules/ionic-angular/fonts/**/*.+(ttf|woff|woff2)
∆ Copying HTML
√ Matching patterns: app/**/*.html
√ HTML copied to www/build
√ Sass compilation complete

According to Ionic2 documentation regarding app-scripts, they have decided not to use gulp in their project any longer:
What About Gulp?
Historically Ionic apps have used gulp as tool to facilitate the build
process. Over the years, gulp has seen less and less development, and
has started to accumulate deprecation warnings. By taking advantage of
standard and dependency free NPM scripts, we are reducing dependencies
and simplifying the development experience.
Instead they are using Ionic app scripts, that are indeed npm scripts for their build process. From the same mentioned doc:
When ionic serve or ionic run are invoked, it ultimately calls an NPM
script. These npm scripts call the #ionic/app-scripts library to
execute the build process.
To accomplish your goal, i.e. to use Pug (formerly known as Jade) for the templates, you may do either of the following:
One: Write a custom app script instead of watch.config.js. The original script is available on here on github.
Two: Write a Cordova hook for before_compile.
As a reference this answer is written on 2016-Nov-12.

Related

What code do I need to enter to make expo project function?

I am not a developer, but I had an app built a couple months ago. The developer we had won't help us at all anymore (not sure why).
Please excuse me if I don't use proper terms.
So the project was done on Expo. I no longer have access to the original expo project, but I have all the code he wrote in a Github repository.
Is is possible to take the code from Github and paste it into Expo XDE and possibly reproduce the app on Expo? (Or Does that sound possible?)
Please let me know.
Yes, you could do this. It is important, that you copy all project files from the GitHub repository into your new Expo project. Don't forget to download all necessary libraries into your new Expo project, e.g. via npm install.
I'm a complete react native noob, I've been doing this, and I love it:
Develop prototype on https://snack.expo.io
Here I can develop and test on the browser, test on my phones, and on emulators. It's great.
When I'm ready to build, I download the code package from the Snack IDE
This downloads a zip file with everything except Expo and imported libraries.
I unzip and go into the folder with my terminal and install the libraries.
Inside the folder, I run these commands to install Expo and the regular libraries:
$ npm install expo # install expo
$ npm install # install a bunch of required libraries
# Then I run these two lines until my project builds
$ npm run web # try to run - it will tell me which libraries to install, one by one
$ npm install <library> # install each library
Eventually I'll move to using command-line only, but this is both a no-brainer for a noob like me and it's like training wheels for me to learn npm and expo.

Programming in Swift on Linux

I would like to prepare the environment for working with Swift on Ubuntu 16.04.
I installed Swift and Atom editor.
I installed the Script package, which allows me to run code from the Atom editor.
Generally it is nice when I compile and run one file (Ctrl+Shift+B shortcut).
The problem is when I would like to build a project composed of several files.
Classes defined in the other files (not the one I compile) are not visible (compilation error).
Is it possible to configure the editor to compile and run the entire project?
How to import external library, eg ObjectMapper ?
You can use the Atom package build. It allows you to create custom build commands and such by using common build providers. You can build with a Makefile or JSON or CSON or YAML or even Javascript. It provides enough flexibility that you can build just about anything. Just make your build file so that it points to all the files to build with the right compiler (probably swiftc in your case). With a Javascript build file, you can even specify a command to run before and after the build, say, to run your newly built program.
There's a great open source project I have been watching called Marathon. It's a package manager and they have been Working on a deployment on linux. I'm not sure how much success they have had, but you can follow along here and maybe help out.
https://github.com/JohnSundell/Marathon/issues/37
Edit: It looks like it does work on linux!
git clone https://github.com/JohnSundell/Marathon.git
$ cd Marathon
$ swift build -c release
$ cp -f .build/release/Marathon /usr/local/bin/marathon
For dependencies, you should use Swift Package Manager.
You can check how Vapor is built - it is prepared for build apps for Ubuntu too.
Also, Vapor toolbox would help you with other projects
https://docs.vapor.codes/2.0/getting-started/install-on-ubuntu/
You can build a Swift project using VS Code + Swift Development Environment extension
If steps on the link above are not clear enough, I've put more details in a blog post

Component-preload.js generation

We are about to close a SAPUI5 application, one of the last steps is to make a Component-Preload.js file to improve performance. I read different guides around the web, all of them need Node.js that I have installed. I'm not expert about that package and I can't figure how to make one of that guides work. I'm developing with NetBeans. As far as I see there is not an official tool (am I right?) to generate that file. Can someone with more experience than me suggest a working, well-explained guide to perform that task?
I don't know if this could help, that's my working tree:
There are several main ways of doing it.
You can use SAP Web IDE to generate it. This assumes that you are using WebIDE to develop your application (which is not true based on your question). The regular version of WebIDE generates this file during the "client build" just before application deployment.
The "multi cloud" version of WebIDE can use a grunt build to do it. You can find more info here if you are interested: https://www.sap.com/developer/tutorials/webide-grunt-basic.html.
Use the new UI5 command line tools (https://npmjs.com/package/#ui5/cli):
Run npm i -g #ui5/cli to install the tools globally.
Open the root of your project with your terminal.
Run ui5 build preload to build the preload.
Use the #sap/grunt-sapui5-bestpractice-build pre-configured grunt tasks. The downside is that they are more-or-less black boxes which do not allow that much customisation. You can find an example setup on SAP's GitHub repository jenkins-pipelines. In a nutshell:
You need to define an .npmrc file which adds the #sap npm registry: #sap:registry=https://npm.sap.com.
Run a npm init command such that you generate a package.json file. This file describes your application and your dependencies (runtime dependencies and dev dependencies; you will only have dev dependencies for now, as you just want to build your app). Make sure to mark the package as private. See the npm docu (at the end of the license chapter).
Then you can install grunt and the build configuration: npm i grunt -D and npm i #sap/grunt-sapui5-bestpractice-build -D.
Lastly you need to define a simple Gruntfile (you can then run the build by just running grunt):
module.exports = function (grunt) {
'use strict';
grunt.loadNpmTasks('#sap/grunt-sapui5-bestpractice-build');
grunt.registerTask('default', [
'lint',
'clean',
'build'
]);
};
You can use the official grunt_openui5 plugin to generate the preload file(s). In order to be able to do this, you need to have node installed:
Create a package.json (e.g. through npm init).
Install grunt by writting in the console: npm install grunt-cli --save-dev.
Install the official openui5 grunt plugin: npm install grunt-openui5 --save-dev.
Now you have all the tools necessary, you just need to tell grunt what it has to do. You should create a Gruntfile.js in the root of your project. In this file you should configure the grunt openui5 task as described in the official github page (I linked it above). You can find a similar file here (it has more build steps like minification and copying the result files in a separate directory).
You can then run the grunt build by simply running grunt <task_name> in the console. If you registered your build task as the grunt default task (like in the sample file: grunt.registerTask('default', [...]);) then you just have to write grunt.
I think you should be able to integrate such a command line script (i.e. to run grunt) inside your IDE as an external tool.
You can use the unofficial gulp-openui5 tool to generate it. I would not recommend this if you are not already using gulp for your builds (as it is not a tool built by SAP). The procedure is the same, but using gulp for building the app instead of grunt (so you need to install node, npm init, install gulp, create the Gulpfile, etc).
Note that for most of the above methods, you need nodejs, which you can download and install from here: https://nodejs.org/en/download/.

VS Code 3rd Party Intellisense not working

I am using the latest release build of VS Code (1.13.1) and I am having some issues with the IntelliSense when trying to use 3rd party libraries.
My example is using JQuery, I have installed JQuery via NPM and imported this into my main.ts file. according to the VS Code website, the IntelliSense should automatically pick up common libraries and display functions and members that are available to that language, so when I type $ and click the '.' key I should see "ajax" for example. I can get the IntelliSense working by installing the types in NPM (npm install #types/jquery).
Am I doing something wrong that might be stopping the automated process from occuring?
Many thanks
Stuart

Using an NPM module from Ionic

I am using ionic 1.3.1 and I want to use the npm phone module here to validate phone numbers on the client side.
In looking around on how to use the npm module, I followed instructions in this SO post (last answer at the bottom) and copied the phone directory from npm_modules to www/lib. I then included the lib/phone/lib/index.js file in my index.html.
When I bring up the page with ionic serve I get the error "module not found".
I see solutions for using npm in Ionic v2 but am not ready to move to v2 yet. I also see some answers pointing towards using Browserify but I am trying to avoid having to use new tools if I don't need to - feels like there must be a simple way to use an npm module inside ionic.
Thanks for any pointers to help resolve.
Sanjay
Since I couldn't figure this out I just created an Angular service from the code in the index.js file for the npm phone module.